10

MySQL Join

Posted Mart 2nd, 2008. Filed under MySQL Dersleri PHP Dersleri

MySQL işlemlerinde şimdiye kadar her seferinde sadece bir tablodan veri alımı yaptık.Çoğunlukla PHP-MySQL projelerinde bu işlemler bizim için yeterli olacaktır.Ancak daha kapsamlı projeler için aynı anda birden fazla tablodan işlem alışverişi yapmamız gerekebilir.MySQL JOIN olayı da bunun için vardır.

MySQL Join

MySQL JOIN işlemi ile iki veya daha fazla tablodan parça alarak yeni bir Joined(katılım) tablosu oluşturulur.Bunun anlamı şu ana kadar öğrendiğimiz tüm MySQL işlemlerini ,yeni oluşan joined tablosuna uygulayabiliriz.

MySQL Join Tablosu Kurulumu

İki veya daha fazla tabloyu birleştirme işlemini örneklerle açıklamak ,anlaşılırlığını arttıracak diye düşünüyorum.Şimdi ; “Aile” ve “Yiyecek” adında iki tabloyu ele alalım ve MySQL joine uyarlayalım.

Aile Tablosu:

Birey Yas
Baba 41
Anne 45
Kız 17
Erkek

Yiyecek Tablosu:

Yemek Birey
Biftek Baba
Salata Anne
Ispanak Çorbası
Kebab Baba

Görüldüğü gibi yukardaki her iki tabloda da “Birey” sütunu ortak olarak bulunuyor.Aile Tablosunda aile bireylerinin tamamını ve yaşlarını görüyoruz.”Yemek” tablosunda ise hangi birey hangi yemeği beğeniyor ise yemek isminden sonra sıralanmıştır.

Basit Bir Örnek

Bir aile bireyinin beğendiği yemekleri SELECT ifadesi ile seçtiğimizi düşünelim.

Kodumuzu yazalım:

< ?php
	
// MySQL bağlantısı yapıldı
	
// Sorgumuz yapılandırıldı
	
$query = "SELECT Aile.Birey, Yiyecek.Yemek ".
	
"FROM Aile, Yiyecek ".
	
"WHERE Aile.Birey = Yiyecek.Birey";
	
$result = mysql_query($query) or die(mysql_error());
	
// sorgunun sonucunu yayınlayalım
	
while($row = mysql_fetch_array($result)){
	
echo $row['Birey']. " - ". $row['Yemek'];
	
echo "<br />";
	
}
	
?>

“WHERE Aile.Birey = Yiyecek.Birey” ifadesine uygun satırları ekrana yazdırılıyor.

Ekran Çıktımız Şöyledir:

Baba – Biftek
Anne – Salata
Baba- Kebab

Tabloları Karşılaştıralım:

Birey

Yas

Baba 41
Anne 45
Kiz 17
Erkek

Yemek

Birey

Biftek Baba
Salata Anne
Ispanak Çorbası
Kebab Baba

MySQL LEFT JOIN

LEFT JOIN ifadesi nedir ve normal JOIN işleminden farkları nelerdir?

Öncelikle, syntax oldukça farklıdır ve birazcık daha complex(kapsamlıdır) dir.

Farklı görünme anlamına bakarsak, LEFT JOIN daha fazla detayı inceliyor diyebiliriz.

Aile ve Yiyecek Tablosu:

Birey

Yas

Baba 41
Anne 45
Kiz 17
Erkek

Yemek

Birey

Biftek Baba
Salata Anne
Ispanak Çorbası
kebab Baba

Basitleştirilmiş MySQL Sorgusu:

SELECT Yiyecek.Yemek, Aile.Birey

FROM Aile, Yiyecek

WHERE Yiyecek.Birey= Aile.Birey

Sonuç:

Baba – Biftek
Anne – Salata
Baba – Kebab

Kodumuzu Yazalım

	
< ?php
	
// MySQL Bağlantı
	
// join sorgusunu yapılandıralım
$query = "SELECT Aile.Birey, Yiyecek.Yemek ".
	
"FROM Aile LEFT JOIN Yiyecek".
	
"ON Aile.Birey = Yiyecek.Birey";
	
$result = mysql_query($query) or die(mysql_error());
	
// her satırın içeriğini tablo içinde yayınlayalım
	
while($row = mysql_fetch_array($result)){
	
echo $row['Birey']. " - ". $row['Yemek'];
	
echo "<br />";
	
}
	
?>

Ekran Çıktısı:

Baba – Biftek
Baba – Kebab
Anne – Salata

İşte gördüğünüz gibi MYSQL LEFT JOIN dedikleri böyle! Sol sutun referanslı sorgu çözümleri de diyebiliriz. Her aile bireyini listeleyerek diğer tabloda adlarının karşılığına gelen yiyecek elemanlarını eşleştirir.Biraz karışık bir konu olsada ileri seviye veritabanı sorgulamalarında ne kadar geçerliliği olduğunun farkına varmışsınızdır umarım..

Etiketler:

, , , ,


Yazar hakkında
Atilla Akoğlu
Yazılım uzmanı & Serpito.com kurucusu & Müstakbel girişimlerin öncüsü & internet meraklısı & Antalyada yaşıyor... kişisel portfolyo

Stumbleupon'a Ekle

10 Responses so far

  1. Ferhat diyor ki:

    Teşekürler.Güzel Anlatım…

  2. Derya diyor ki:

    Çok güzel anlatmışsınız. Sitenizi not ettim. Takıldığım yerlerde başvuracağım bir kaynak….
    Tebrikler, başarılar..

  3. tufan diyor ki:

    güzel bir örnek ama keşke yabanci bri kaynaktan direkt çeviri yapmakla kalmayıp, siz de bir kaç ilave yaparak, bir iki örnekle daha bu konuyu zenglinleştirebilseydiniz.

    Yine de teşekkürler. Güzel bir örnek olmuş.

  4. mehmet diyor ki:

    baslangıc için hos bı orenk ama bıraz daha ılerı duzeyde bıkac ornek koyarsanız sevınırım
    tesekkurler,basarilar

  5. fatih diyor ki:

    detaylı bir anlatım değil ama işime yaradı. teşekkürler

  6. Lida diyor ki:

    Merhaba,

    anlatım çok güzel fakat ben JOIN ın her yerde kullanıldığını gördüm.
    temel mantık nedir burada?

  7. amento diyor ki:

    2. örneğin ekran çıktısı hatalı.

    baba biftek
    baba kebap
    erkek NULL
    anne salata
    kız NULL

    olmalı

  8. memento diyor ki:

    hayır kanki sonuç doğru olması lazım. “ON Aile.Birey = Yiyecek.Birey” ifadesi iki tabloda da aynı bireylerin yer alması gerektiğini söylüyor.

  9. Levent ERSOY diyor ki:

    Hakikatten çok güzel bir anlatım. Dosdoğru öğretiyor.

  10. nefretten diyor ki:

    Ilk kisim cok basarili anlatilmis ama ikinci kisim yeterince aydinlatici degil.

    Cok tesekkürler.

Yorumunuzu paylaşın