SQL JOIN Türleri: INNER, LEFT, RIGHT, FULL Karşılaştırması
# SQL JOIN Türleri: INNER, LEFT, RIGHT, FULL Karşılaştırması
İki veya daha fazla tabloyu birleştirmek SQL'de JOIN ile yapılır. Hangi satırların sonuçta yer alacağı JOIN türüne göre değişir. Gelin her birinin ne zaman kullanılacağını pratik örnekle görelim.
INNER JOIN, her iki tabloda da eşleşen satırları döndürür. Hiçbir tarafta eşleşmeyenler hariç tutulur.
Örnek senaryo: Müşteriler ve Siparişleri tablosu var. Sadece sipariş veren müşterileri görmek istiyorsun.
1SELECT musteri.ad, siparis.siparis_no2FROM musteri3INNER JOIN siparis ON musteri.id = siparis.musteri_id;Çıktı:
1ad | siparis_no2Ahmet | 1013Ayşe | 1024Mehmet | 103Sipariş vermeyen müşteriler listede yoktur.
LEFT JOIN, sol tabledeki tüm satırları döndürür. Sağ tabloda eşleşme olmazsa NULL gösterir.
Aynı tabloları kullan, ama tüm müşterileri görmek istiyorsun (sipariş vermiş olsun ya da olmasın):
1SELECT musteri.ad, siparis.siparis_no2FROM musteri3LEFT JOIN siparis ON musteri.id = siparis.musteri_id;Çıktı:
1ad | siparis_no2Ahmet | 1013Ayşe | 1024Mehmet | 1035Fatma | NULLFatma sipariş vermese de listede yer alır.
RIGHT JOIN, sağ tabledeki tüm satırları tutar. Sol tabloda eşleşme yoksa NULL olur.
1SELECT musteri.ad, siparis.siparis_no2FROM musteri3RIGHT JOIN siparis ON musteri.id = siparis.musteri_id;Tüm siparişler görünür; müşteri bilgisi eksikse NULL döner.
FULL JOIN (FULL OUTER JOIN), her iki tabledeki tüm satırları döndürür. Eşleşmeyenler NULL olur. Not: MySQL bunu doğrudan desteklemez; LEFT JOIN + RIGHT JOIN ile UNION kullan.
1SELECT musteri.ad, siparis.siparis_no2FROM musteri3LEFT JOIN siparis ON musteri.id = siparis.musteri_id4UNION5SELECT musteri.ad, siparis.siparis_no6FROM musteri7RIGHT JOIN siparis ON musteri.id = siparis.musteri_id;- INNER: İki tabloda da var olanlar
- LEFT: Sol tabledeki hepsi + sağda eşleşenler
- RIGHT: Sağ tabledeki hepsi + solda eşleşenler
- FULL: Her iki tabledeki hepsi
Projeinde veri kaybı istemiyorsan LEFT/RIGHT; tam eşleşme lazımsa INNER kullan.
0 yorum