• 05-05-2009, 14:28:44
    #19
    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
  • 05-05-2009, 15:32:18
    #20
    Bu şekilde birşey anlamadım.
    Örneği iyi anlamam için verdiğim veri tabanı ile aynı olmalı.
    Ben şimdi yazarlar.id 'yi anladım da yazar_adsoyad 'ı anlamadım, yok böyle birşey.

    oykuler.id var ama oyku.id yok bende.
    Yani örnek kafamı karıştırdı.
  • 05-05-2009, 18:26:18
    #21
    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, 19:19:30
    #22


    Resimde gösterdiğim gibi ben 4 TABLO'yu birleştirmeye çalışıyorum.
    Oykuler ve Yazarlar sadece değil. Aynı zamanda Yayinevi ve Türler TABLO'larından da eşleşen veri çekmeye çalışıyorum.
  • 05-05-2009, 20:06:56
    #23
    Belki 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
    #24
    Ş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, 22:05:22
    #25
    Maalesef birşekilde başaramadık.
    Verdiğiniz kod da hata veriyor.

    2 gündür 4 tane tabloyu eşleştirmeyi başaramıdık.
  • 05-05-2009, 23:17:05
    #26
    Hatayı yazsanız ?
  • 05-05-2009, 23:22:54
    #27
    Arkadaş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.