Makaleler

İlişkili Tablolardan Tek Sorguda Veri Çekmek

Php Fusion v7 sürümde bazı tabloların birbirleri ile ilişkili olduğunuz görüyor. Örneğin Haber Kategorileri ve Haberler, Makale Kategorileri ve Makaleler, Resim Albümleri ve Resimler, Forum Kategorileri, Forum Başlıkları gibi sıralayabiliriz.



Standart tablolar için zaten çekirdek yapıda sorgu örnekleri mevcut, fakat tablo alanları fazla olduğundan sanki biraz karışıkmış gibi geliyor. LEFT JOIN metodu kullanılarak istediğimiz kadar tabloyu ortak alanlar ile ilişkilendirip tek sorguda ilişkili alanlarıdaki verileri listeleyebiliyoruz.



Örnekleyecek Olursak



Kategori Tablosu -> katid, katadi, kataciklama alanlarına İçerik Tablosu ise -> icerikid, icerikkatid, icerikbaslik, icerikdetay alanlarına sahip olsun...



Öyleyse sorgumuzu çalıştırırken ortak alan olan katid ve icerikkatid alanlarınız sorguda LEFT JOIN ile birleştirilmesi gerekiyor.



$sorgu=dbquery("

SELECT kat.*, icr.* FROM ".DB_ICERIK." icr

LEFT JOIN ".DB_KATEGORI." kat ON icr.icerikkatid = kat.katid

ORDER BY icr.icerikid DESC

");




yukarıda görülen sorguda urun tablosunun soluna kategorileri aldık. Böylece dönen sonunta değer varsa tek dize değişkenine tüm bilgileri aktarıp, alan adına göre yazdırabiliyoruz.



if(dbrows($sorgu)!=0){ // Eğer sonuç sıfırdan farklıysa ( kayıt Varsa)

while($veri=dbarray($sorgu)){

echo "Kategrori : ".$veri["katadi"]."
"; // Kategilerden gelen isim

echo "İçerik Başlığı : ".$veri["icerikbaslik"]."
"; // İçerikten gelen başlık

}

}




sorgu üzerinde oynamalar, eklemeler yaparak dilediğiniz ilişkilendirilebilen tablolardan veri çekebilirsiniz...



Örneğin habere özel yorumlar gibi... Gerisi hayal gücüne kalıyor. Bu tarz modül geliştirebilirsiniz.



Bol Fusionlu günler dilerim...

KREKLAM 07 Ağustos 2015 2380 okur 0 yorum 0 derecelendirme Yazdır

0 yorum

Bir Yorum Yap

Yorum göndermek için lütfen üye girişi yapın.
    Henüz yorum gönderilmemiş

Derecelendirme yalnızca üyeler tarafından kullanılabilir. Oy vermek için lütfen Giriş veya Kayıt yapın.
Muhteşem! (0)0 %
Çok İyi (0)0 %
İyi (0)0 %
Orta (0)0 %
Kötü (0)0 %