Veri tabanından bilgi çekmek için SELECT komutunu kullanırız. SELECT * FROM tablo_ismi şeklinde bir komut ile tablo_ismi isimli tablodan bilgimizi çekeriz, eğer bir şarta bağlı olarak çekeceksek WHERE ile şartımızı belirtiriz.
SELECT * FROM blog WHERE id=1 blog isimli tabloda id değeri 1 olan bilgiyi getirir ekrana. Id değeri bir olan konunun bir de kategori bilgisi var kategoriler tablosunda, ayrıca konuyu açan kişinin de bilgisi profil tablosunda hepsi için ayrı ayrı sorgu çalıştırmaktansa tek bir sql sorgusu ile hepsini getirebiliriz.
Kategori tablosunda k_id ve kat_isim adında alanlar var, kategori ismi ve id bilgisini tutan alanlar.
Profil tablosunda p_id, kullanici_adi adında alanlar var i, kullanıcı adı ve kullanıcının id bilgisini tutan alanlar.
Blog tablosunda id, blog_baslik, blog_icerik, kat_id, kullanici_id adında alanlar var, konunun id bilgisi, içerik ve başlık bilgisi, konuyu açan kullanıcının id bilgisi ve hangi kategoride bulunuyorsa onun id bilgisini tutan alanlar.
Tek sorguda bunları getirebilmek için şu komutu kullanıyoruz;
SELECT * FROM blog b INNER JOIN profil p ON b.kullanici_id = p.p_id INNER JOIN blog_kategori bk ON b.kat_id=bk.k_id INNER JOIN sosyal s ON p.p_id=s.kullanici_id WHERE b.id=1
Blog isimli tabloyu seçtik ve bu tablo ismini b isimli bir değişkene atadık, sonra bunun aynısını diğer tablolar içinde yaptık.
b.kat_id=bk.k_id ile blog isimli tablodaki kat_id alanıyla blog_kategori isimli tablodaki k_id alanını birleştirmiş olduk blog tablosunda tutulan kategori id si ne ise kategoriler tablosundaki o id ye sahip olan kategorinin bilgileri gelecek, aynı şey profil tablosu içinde geçerli, b.kullanici_id=p.p_id blog tablosundaki kullanıcı id bilgisi ile profil tablosundaki id bilgisi birbirine bağlanarak bilgi çekilmiş. Bu şekil bir kullanım yapmasaydık eğer her biri için ayrı ayrı sorgu çalıştırmak zorunda olacaktık bu şekilde daha az sorgu ile daha fazla iş yapmış olduk.
English: https://niyazi.net/en/pulling-information-by-associating-tables-in-database-inner-join
Muhammed Niyazi ALPAY - Cryptograph
Senior Software Developer & Senior Linux System Administrator
Meraklı
PHP MySQL MongoDB Python Linux Cyber Security
Hiç yorum yok