SELECT oykuler.id AS oykul_ID, oykuler.image AS oyku_image, oykuler.baslik AS oyku_baslik, oykuler.spot AS oyku_spot, yazarlar.id AS yazar_id, yazarlar.adsoyad AS yazar_adsoyad FROM oykuler LEFT JOIN yazarlar ON yazarlar.id = oykuler.yazar_id WHERE oykuler.yayin='E' ORDER BY oykuler.tarih DESC LIMIT $i,1
Birkaç Tabloyu Birbirine Bağlamak
34
●6.042
- 05-05-2009, 14:28:44
- 05-05-2009, 18:26:18
SELECT oykuler.id AS oykul_ID, oykuler.image AS oyku_image, oykuler.baslik AS oyku_baslik, oykuler.spot AS oyku_spot, yazarlar.id AS yazar_id, yazarlar.adsoyad AS yazar_adsoyad FROM oykuler LEFT JOIN yazarlar ON yazarlar.id = oykuler.yazar_id WHERE oykuler.yayin='E' ORDER BY oykuler.tarih DESC LIMIT $i,1
Çift tablo ile uğraşırken tablodaki alan adlarının aynı olması sonucu bazı karışıklıklar oluyor. Bunların önüne geçmek için tablo alan adını başka bir isim ile temsil ettiriyorum. Yani "AS" kelimesinden sonraki yerler tablo alanlarını ifade etmiyor. Sadece sorgu sonucunda alınan verilerdeki alanların adını belirtiyor.
Örnek:
İki tane tablomuz var diyelim;
tablo1 ------ tablo2 id id alan alan
Mesela iki tablodanda aynı anda veri çekerken id verileri sadece bir tablodan gelir çünkü iki tablo alan adıda aynıdır. Bunun önüne geçmek için SELECT içinde tablo.alan AS "yeniisim" şeklinde tanımlama yapılır. Sorgunun dönderdiği verilere bakarsanız daha iyi anlayabilirsiniz.
Tabikide sizin tablo alanlarınızda aynı isimli olan sadece id var. Ben yinede yazarın adsoyadını da tanımladım.
Size verdiğim SQL kodunu denediniz mi ? Önce onu deneyin, çalışması lazım tablo alanları doğru ise. - 05-05-2009, 20:06:56Belki alan adları yanlış yazılmış olabilir. Biraz göz gezdirirseniz bulabilirsiniz hatayı.
SELECT *, oykuler.id AS oykul_ID, oykuler.image AS oyku_image, oykuler.baslik AS oyku_baslik, oykuler.spot AS oyku_spot, yazarlar.id AS yazar_id, yazarlar.adsoyad AS yazar_adsoyad, yayinevi.adi AS yayinevi, turler.adi AS turu FROM oykuler LEFT JOIN yazarlar ON yazarlar.id = oykuler.yazar LEFT JOIN yayinevi ON yayinevi.id = oykuler.yayinevi LEFT JOIN turler ON turler.id = oykuler.turu WHERE oykuler.yayin='E' ORDER BY oykuler.tarih DESC LIMIT $i,1
- 05-05-2009, 20:40:08Şimdi bu verdiğiniz kodları deneyeceğim.
Bu arada bunun bir yolu daha var.
aşağıdaki kodu yayinevi.php diye kaydedip siteye attığım zaman, oykuler tablosundaki yayinevi ID'sini alıp markalar tablosundaki ID ile eşleştiriyor ve yayinevi adını yazdırıyor ekrana.
<?php require("configuration.php"); $sonuc=mysql_query("SELECT yayinevleri FROM adi WHERE id='$id'",$link) or die("Sorgu Çalıştırılamadı"); $sira=mysql_fetch_object($sonuc); echo $sira->adi; ?> - 05-05-2009, 23:22:54Arkadaşlar şu yöntemle bir ilerleme sağladım. Her 6 tablodan da birşeyley yazdırabiliyorum.
Öncelikler kodlara bakmanızı rica ediyorum.
<? mysql_connect("localhost","root",""); mysql_select_db("edebidunya"); $sql = mysql_query("SELECT id, image, yazi FROM oykuler ORDER BY tarih DESC"); while ( $row = mysql_fetch_assoc($sql) ) { $sql2 = mysql_query("SELECT ad FROM yazarlar WHERE id='".$row['id']."'"); $row2 = mysql_fetch_assoc($sql2); $sql3 = mysql_query("SELECT ad FROM yillar WHERE id='".$row['id']."'"); $row3 = mysql_fetch_assoc($sql3); $sql4 = mysql_query("SELECT ad FROM eserler WHERE id='".$row['id']."'"); $row4 = mysql_fetch_assoc($sql4); $sql5 = mysql_query("SELECT ad FROM yayinevi WHERE id='".$row['id']."'"); $row5 = mysql_fetch_assoc($sql5); $sql6 = mysql_query("SELECT ad FROM turler WHERE id='".$row['id']."'"); $row6 = mysql_fetch_assoc($sql6); } ?>buna göre eserin türünü yazdırmak çin row6[ad] diye yazmam yeterli oluyor. Veya yayinevi adını yazdırmak için row5[ad] yazmam yeterli oluyor.
SORUN NERDE KALDI:
Lin oluşmuyor ve resim görünmüyor.
Eksiğimi bulursanız minnettar kalacağım.
