Mysql - Bağlantılı Sorgu ?
-
2 tane tablom olsun.
kişi
şehirler
----
şehirler kısmında id var 34 istanbul olsun ...
Kişi kısmında bilgileri verdik ve şehir'i ekrana bastırmak istiyorum.Fakat şehir kısmında şehir'in idsi olacak yani 34...
Ekrana direkt bastırdığımda 34 basacak.Burdan tekrar sorgu ile şehirler'e gidip ordna çekmem lazım.
Mysql yada sql'da bunun için daha basit bir olay var mı ? yani gerçek değeri 34 olsun ama biz onu istanbul şeklinde maskeleyelim ?
-
join ederek tabloları halledebilirsin
-
id niye 34 basıyon direk istanbul diye kaydet
-
Media bunu yazdı:
-----------------------------id niye 34 basıyon direk istanbul diye kaydet
-----------------------------dediğin şey çok amatorce hocam. şöyle düşün şehirler olarak düşünme ordaki olayı. renkler diye düşün ve site 5 dil o zaman dediğin olay patlar
-
hocam join yerine başka bir teknik var mıdır diye merak ettim.Mutlaka vardır bir numara.
edit: ya aslında adam gibi örnek verecektim fakat üstünde çalıştığım proje için düşündüm.Bir yere not almadım.Gitti bütün herşey.
2-3 gündür yoğun şekilde düşünüyorum.Bir sürü şey geliyor aklıma.Tam buldum heh tamam dedim.Hop gitti .
Keşke kaydetseydim.Ama bunun mantığından ilerliyor.O yüzden bu örneği verdim.
-
joinden başka neden bir şey arıyorsun anlamadım..
zaten performansı kanıtlanmış bir şey daha fazla kasmana gerek yok..
-
zumsuk bunu yazdı:
-----------------------------hocam join yerine başka bir teknik var mıdır diye merak ettim.Mutlaka vardır bir numara.
edit: ya aslında adam gibi örnek verecektim fakat üstünde çalıştığım proje için düşündüm.Bir yere not almadım.Gitti bütün herşey.
2-3 gündür yoğun şekilde düşünüyorum.Bir sürü şey geliyor aklıma.Tam buldum heh tamam dedim.Hop gitti .
Keşke kaydetseydim.Ama bunun mantığından ilerliyor.O yüzden bu örneği verdim.
-----------------------------joinden başka where le de yapabilirsin.
-
hocam yok tekrar sorguya girecek ya..Diyorum ki onun yerine biz mysql'e desek ;
bak kardeşim şehirler kısmına giriyorum.Fakat benim istediğim şehirler id'yi sorgu sorgu yapmaya gerke yok.Ben ne zaman şehir kısmını çeksem ; sne otomatik değerleri ata.
Yani bu join işlemini otomatik yapsın , biz direkt bastıralım.
Bir nevi indexleme yani.Bulamazsam çözüm yine inner join ..
-
o tarz birşeyin olduğunu sanmıyorum
-
SELECT
KISI_ID,
KISI_ADI,
KISI_SOYADI,
(SELECT SEHIR_ADI FROM SEHIRLER WHERE SEHIR_ID = KISILER.KISI_SEHIRID) as SEHIR_ADI
FROM
KISILER
-
SELECT Kisi.ID, Kisi.Adi, Kisi.Soyadi, Sehirler.SehirAdi FROM Kisi, Sehirler WHERE Sehirler.ID = Kisi.SehirID
Burdan dönecek sonuç
1 Ali Sarı İstanbul 2 Mehmet Kara Ankara edit: 1905 in yazdığı da olur ama çift sorgu çekmeye gerek bunun için
benim yazdığımda şehri girilmemiş kişileri döndermez. onlarında gelmesi için isnull kullanırsın olur
join li de şöyle yaparsın
SELECT K.ID, K.Adi, K.Soyadi, S.SehirAdi FROM Kisi K INNER JOIN Sehirler S ON S.ID = K.SehirID
.
yukardaki sorgu da aynı şekilde şehri girilmemiş kişileri döndermez.
INNER JOIN yerine LEFT OUTER JOIN yazarsan şehri girilmiş-girilmemiş tüm kişiler gelir