PHP'de mysqli ile veritabanı işlemleri yaparken JOIN kullanımı, birden fazla tabloyu birbirine bağlayarak ilişkilendirilmiş verileri tek bir sorguda çekmene olanak tanır. Bu, ilişkisel veritabanı yapısının temel avantajlarından biridir.
JOIN, SQL'de birden fazla tabloyu ilişkili alanlar üzerinden birleştirmek için kullanılır. Genellikle birbiriyle foreign key - primary key ilişkisi olan tablolarda kullanılır.
Örneğin:
kullanicilar tablosunda kullanıcı bilgileri,
siparisler tablosunda sipariş bilgileri varsa,
Her siparişin hangi kullanıcıya ait olduğunu görmek için bu iki tabloyu JOIN ile birleştirebiliriz.
JOIN 4 farklı şekilde kullanılabilir.
INNER JOIN : Eşleşen kayıtları getirir. Her iki tabloda eşleşme varsa.
LEFTJOIN : Sol (ilk) tablodaki tüm kayıtları, sağdan eşleşenlerle birlikte getirir.
RIGHT JOIN : Sağ tablodaki tüm kayıtları, soldan eşleşenlerle birlikte getirir.
FULL OUTER JOIN : (MySQL desteklemez) Tüm kayıtları getirir, eşleşme olmasa bile.
Kulanıcılar ve siparişler tablomuz aşağıdaki gibi olsun. Sipariş tablosunda kullanıcı bilgilerini yazmak yerine sadece ID bilgisini kaydederek, sipariş ile beraber kullanıcı bilgilerine de ulaşabiliriz.
KULLANICILAR TABLOSU (kullanicilar.sql)
id | ad | soyad |
1 | Franz | KAFKA |
2 | Sabahattin | ALİ |
SİPARİŞLER TABLOSU (siparisler.sql)
id | kullanici_id | urun |
1 | 1 | televizyon |
2 | 1 | yazıcı |
3 | 2 | telefon |
Yukarıdaki tablolara göre , sipariş bilgilerini ,kullanıcı ismi dahil aşağıdaki gibi JOIN kullanarak TEK SORGU ile alabilriiz. Veri tabanı adının ticaret olduğunu varsayalım.
<?php
$baglanti = new mysqli("localhost", "root", "", "ticaret");
if ($baglanti->connect_error) {
die("Bağlantı hatası: " . $baglanti->connect_error);
}
?>
<?php
$sql = "
SELECT kullanicilar.ad, siparisler.urun
FROM kullanicilar
INNER JOIN siparisler ON kullanicilar.id = siparisler.kullanici_id
";
$kayitlar=mysqli_query($baglanti,$sql);
?>
Yukarıdaki sql cümlesine göre, kullanıcılar tablosundan "ad" bilgisi ile siparişler tablosundan "urun" bilgisi alınıyor. INNER JOIN ile kullanıcı tablosundaki "id" bilgisi ile siparişler tablosundaki "kullanici_id" bilgisi eşleşiyorsa kayıtlar çekiliyor. Dolayısıyla 2 cümle yerine tek bir sql cümlesi ile seçim yapılmış olur.
JOIN ile alınan bilgileri klasik yazdırma komutları ile yazdıralım.
<?php
$kayitlar=mysqli_query($baglanti,$sql);
while($kayit=mysqli_fetch_assoc($kayitlar)) {
echo $kayit["ad"]." ".$kayit["urun"]."<br>";
}
?>
Yukarıda siparişler ve kullanıcı tablosundaki JOIN ile uyuşan veriler sanki tek bir tabloymuş gibi satır satır $kait değişkenine alınır ve ekran çıktısı aşağıdaki gibi olur.
Franz televizyon
Franz yazici
Sabahattin telefon
Toplam 33 Makale
Lütfen yorumlarınızda saygılı, yapıcı ve anlaşılır bir dil kullanın.
Küfür, hakaret ya da spam içerikler onaylanmaz.