lostyazilim

Ödüllü - MySQL Sorusu

14 Mesajlar 2.065 Okunma
lstbozum
wmaraci reklam

Blaze Blaze Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 10.06.2015
  • Yaş/Cinsiyet 32 / E
  • Meslek PHP
  • Konum Ankara
  • Ad Soyad M** A**
  • Mesajlar 6
  • Beğeniler 0 / 0
  • Ticaret 2, (%0)
Merhaba arkadaşlar.

Şöyle bir tablom var.

Koşular

- tarih
- pist
- sehir

Ben bu tablodan tarihi,pisti,şehiri aynı olan verileri çekmek istiyorum fakat bir çok deneme yapmama rağmen sorunu 1 haftadır çözemedim.

Konuyu çözen arkadaşa 1 adet domain regleyeceğim.
 

 

wmaraci
reklam

altunoren altunoren bilmenizgerek.com Kullanıcı
  • Üyelik 07.09.2013
  • Yaş/Cinsiyet 36 / E
  • Meslek Web Yazılım, Grafik Tasarım
  • Konum KKTC
  • Ad Soyad İ** A**
  • Mesajlar 356
  • Beğeniler 25 / 99
  • Ticaret 0, (%0)
SELECT * FROM tablo WHERE tarih='01.01.2015' AND pist='havaalani' AND sehir='adana'

daha sonra

while() kumutu ile tüm bu kriterdeki tüm verileri çekeceksin.


bu formülü kullanarak istediğin sonucu alabilirsin kardeşim.
 

 

Blaze Blaze Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 10.06.2015
  • Yaş/Cinsiyet 32 / E
  • Meslek PHP
  • Konum Ankara
  • Ad Soyad M** A**
  • Mesajlar 6
  • Beğeniler 0 / 0
  • Ticaret 2, (%0)
Hocam dediğimi yanlış anlamışsınız.

Örneğin;

Tabloda 5 kayıt var şu şekilde


Adana - 12.12.2015 - Çim
Adana - 12.12.2015 - Çim
Adana - 12.12.2015 - Çim
Ankara - 14.12.2015 - Kum
İstanbul - 19.12.2015 - Çim

Şehir,tarih,pisti olan değerleri bana vermesi gerekli;

Adana - 12.12.2015 - Çim
Adana - 12.12.2015 - Çim
Adana - 12.12.2015 - Çim

Gibi yani ben herhangi bir değer vermiyeceğim bu 3 değeri aynı olan verileri verecek bana.
 

 

altunoren altunoren bilmenizgerek.com Kullanıcı
  • Üyelik 07.09.2013
  • Yaş/Cinsiyet 36 / E
  • Meslek Web Yazılım, Grafik Tasarım
  • Konum KKTC
  • Ad Soyad İ** A**
  • Mesajlar 356
  • Beğeniler 25 / 99
  • Ticaret 0, (%0)
Tamam işte hocam. 200 bin tane veri var ve içinde sadece 3 tane Adana - 12.12.2015 - Çim var diyelim. sen yukarıdaki kodu yazdığında sana 200 bin donuçtan sadece 3 tanesini verecektir. while ile sadece 3'ü çıkacak.
 

 

wmaraci
wmaraci

Blaze Blaze Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 10.06.2015
  • Yaş/Cinsiyet 32 / E
  • Meslek PHP
  • Konum Ankara
  • Ad Soyad M** A**
  • Mesajlar 6
  • Beğeniler 0 / 0
  • Ticaret 2, (%0)
Hocam sizin verdiğiniz kodda manuel olarak where ile değer veriyoruz. Ben diyorumki değeri biz vermiyeceğiz sadece şehir,pist,tarih bu değerleri aynı olan verileri vericek. Yani ben manuel olarak adana veya herhangi bir tarih belirtmiyeceğim 3 değeri aynı olan verileri kendisi otomatik bulacak. Sizin dediğiniz şekilde olsaydı çoktan çözmüştüm zaten.

Amacım ise aynı tarihte,aynı pistte, aynı şehirde koşmuş olan atları bulabilebilmek.
 

 

JexyR JexyR Codeigniter / Symfony Kullanıcı
  • Üyelik 27.04.2015
  • Yaş/Cinsiyet 40 / E
  • Meslek Yazılım Müh.
  • Konum Diğer
  • Ad Soyad K** T**
  • Mesajlar 183
  • Beğeniler 11 / 62
  • Ticaret 0, (%0)

SELECT *
FROM aa t1
WHERE EXISTS
(
SELECT 1
FROM aa t2
WHERE t2.tarih = t1.tarih
LIMIT 1, 1
)

AND EXISTS
(
SELECT 1
FROM aa t2
WHERE t2.pist = t1.pist
LIMIT 1, 1
)
AND EXISTS
(
SELECT 1
FROM aa t2
WHERE t2.sehir = t1.sehir
LIMIT 1, 1
)


Kısaca :


SELECT *
FROM aa t1
WHERE EXISTS
(
SELECT 1
FROM aa t2
WHERE t2.tarih = t1.tarih AND t2.pist = t1.pist AND t2.sehir = t1.sehir
LIMIT 1, 1
)
 

 

Blaze Blaze Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 10.06.2015
  • Yaş/Cinsiyet 32 / E
  • Meslek PHP
  • Konum Ankara
  • Ad Soyad M** A**
  • Mesajlar 6
  • Beğeniler 0 / 0
  • Ticaret 2, (%0)
Hocam teşekkürler fakat verdiğiniz kod tüm atları veriyor ve tarihler vs farklı değerler farklı.

Benim amacım aynı tarih, aynı pistte, aynı şehir de koşan atları bulmak ve kimin kimi geçtiğini görmek.
 

 

Webtizz Webtizz WM Aracı Kullanıcı
  • Üyelik 03.01.2014
  • Yaş/Cinsiyet 32 / E
  • Meslek eCommerce Developer
  • Konum İstanbul Avrupa
  • Ad Soyad K** T**
  • Mesajlar 41
  • Beğeniler 9 / 15
  • Ticaret 0, (%0)
SELECT * FROM tablo WHERE sehir IN ( SELECT sehir FROM tablo WHERE tarih IN ( SELECT tarih FROM tablo WHERE pist IN ( SELECT pist FROM tablo GROUP BY pist HAVING COUNT(*)>1)))

GROUP BY sehir HAVING COUNT( * ) >1

Sabahın bu saatinde saçmalamış olabilirim belki ama beyin fırtınası olabilir sana :)

Ek Olarak: yada şu şekilde dene

SELECT sehir,pist,tarih, count( * ) AS ayni
FROM tablo
GROUP BY sehir
HAVING ayni >1
ORDER BY ayni DESC
 

 

Mir Mir CodeMania Kullanıcı
  • Üyelik 15.11.2011
  • Yaş/Cinsiyet 42 / E
  • Meslek Yazılım mühendisi
  • Konum İstanbul Avrupa
  • Ad Soyad M** Y**
  • Mesajlar 95
  • Beğeniler 10 / 11
  • Ticaret 15, (%100)
verileriniz bunlar iken;
Adana - 12.12.2015 - Çim
Adana - 12.12.2015 - Çim
Adana - 12.12.2015 - Çim
Ankara - 14.12.2015 - Kum
İstanbul - 19.12.2015 - Çim

bu şekilde sorgulama yaptığınızda;

SELECT COUNT(tarih),tarih,pist,sehir
From tabloadiniz
GROUP BY tarih,pist,sehir
HAVING (COUNT(tarih)>1)

alacağınız sonuc
3 - Adana - 12.12.2015 - Çim

daha sonra bu nu tek satırda değilde 3 satırda görmek isterseniz joinleyerek 3 kayıt şeklinde de görebilirsiniz.
 

 

alabacaknet alabacaknet Developer Kullanıcı
  • Üyelik 14.09.2012
  • Yaş/Cinsiyet 39 / E
  • Meslek Yazılım geliştirme
  • Konum Ankara
  • Ad Soyad M** A**
  • Mesajlar 217
  • Beğeniler 55 / 48
  • Ticaret 0, (%0)
SELECT * FROM tablo WHERE tarih = pist AND pist = sehir

şeklinde denediniz mi?

--------------------
Pardon ben aynı satırda, aynı değerli 3 sütunlu verileri istiyorsunuz sandım :-) Silemiyorum maalesef :(
 

 

Murat Alabacak <http://muratalabacak.net>
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al