• 04-05-2009, 21:02:16
    #1
    Bana çok karmaşık gibi geliyor.
    Şimdi benim Veri Tabanımda OYKULER diye bir TABLO var.
    Ayrıca YAZARLAR, YAYINEVLERI, YIL ve TURLER'i de bu tablonun altından çıkardım.

    Şimdi bu ver ayrı ayrı tablolarda olunca birbirleriyle bağlayamıyorum.
    Bir OYKULER tablosundan resim, baslık gibi şeyleri çağırabiliyorum da, onunla ilişkili olan YAZARLAR tablosundan öykünün yazarını nasıl çağıracağım?



    Resimde Veri Tabanımı tarif ettim.
  • 04-05-2009, 21:06:15
    #2
    öyküler tablosunda mutlaka diğer tablolarla bağlantılı ortak bir anahtar vardır mesela "id"

    Bir OYKULER tablosundan resim, baslık gibi şeyleri çağırabiliyorum da, onunla ilişkili olan YAZARLAR tablosundan öykünün yazarını nasıl çağıracağım?

    öykülerden bu çağırdıklarında id ortaksa aldığın id yi diğer tabloda o idye eşit olan idyi bularak yapabilirsin

    veya 2tablodada yazarı kısmı ortaktır. öykülerde aldığın bir kitabın yazarını yazarlar tablosunda yazar ismiye eşleştir.
  • 04-05-2009, 21:10:28
    #3
    Türler Tablom Şöyle:
    ad
    id
    bilgi
    sira

    Yayinlar Tablom Şöyle:
    ad
    id
    bilgi
    sira

    Oykuler Tablom Şöyle:
    id
    baslik
    image
    spot
    yazi
    tarih
    vs
    vs

    Örnekleme yaparsanız çok minnettar kalırım.
  • 04-05-2009, 21:59:03
    #4
    burda eksik bilgi var sanırım

    türlerdeki id ile öykülerdeki id aynı id mi yoksa kendi aralarındaki id mi?

    türler tablona şunu ekle mesela oykuler_id

    yani türler için id değeri 1 olan kayıtta oykuler için kıyaslama yapacak oykuler_id bulunmalı
  • 04-05-2009, 22:32:25
    #5
    Hocam iki TABLO arasında eşleşmeyi şu şekilde başardım.

    WHERE turler.id=yayinevi.id

    Ancan 3 veya 4 TABLO'nun ID'lerini nasıl eşleştireceğimi halen bilmiyorum.

    Bu arada size bugün +rep veremedim, borcunuz yarına kalsın
  • 04-05-2009, 22:38:37
    #6
    janocan adlı üyeden alıntı: mesajı görüntüle
    Hocam iki TABLO arasında eşleşmeyi şu şekilde başardım.

    WHERE turler.id=yayinevi.id

    Ancan 3 veya 4 TABLO'nun ID'lerini nasıl eşleştireceğimi halen bilmiyorum.

    Bu arada size bugün +rep veremedim, borcunuz yarına kalsın

    WHERE turler.id=yayinevi.id

    benimde anlatmak istediÄŸim bu ama burda hata olur

    turler.id ile yayinevi.id iliÅŸikli deÄŸil

    biri kendisinin id si diÄŸeri ise kendisinin idsi
    yayinevi tablonda eser_id diye bi alan tanımla ve bu bütün tablolarında tanımlı olsun ozaman bütün eşleşmeleri bu değer üzerinden yapabilirsin

    yoksa arada köprü olacak birşey olmaz

    mesela bir kitabın (eser_id) değerlerini arıyoruz

    WHERE turler.eser_id=yayinevi.eser_id
    WHERE turler.eser_id=yazar.eser_id
    WHERE yazar.eser_id=yayinevi.eser_id

    gibi gibi...

    http://www.mehmetduran.com/detay.aspx?detay=85
  • 04-05-2009, 22:46:18
    #7
    Tabii hocam,
    Şu şekilde bağlantı tamamdır.
    Ama sadece 2 TABLO arasında. Yazarlar ve Öyküleri.

    	<?
    		$sorgu=mysql_query("SELECT ad FROM yazarlar ORDER BY id LIMIT 0,5" , $link);
    		$i=0;
    			while($veri=mysql_fetch_row($sorgu))
    		{
    			$oykudiz[$i]=$veri[0];
    			$i++;
    		}
    		$data=mysql_fetch_row( mysql_query("SELECT oykuler.id , oykuler.baslik , yazarlar.fotograf , yazarlar.adsoyad  FROM yazarlar, oykuler WHERE yazarlar.id=oykuler.id AND yazarlar.sira=$oykudiz[0] ORDER BY oykuler.id DESC LIMIT 0,1" , $link));
    	?>
    Şimdi benim için 3 TABLO ve daha fazlasını birleştirme başka deyimle eşleştirme gerekir.
  • 04-05-2009, 23:04:57
    #8
    yazarlar tablosu
    --------------
    id----yazar
    1---R.N.Güntekin
    2---YaÅŸar Kemal
    3---Cezmi Ersöz
    4---Ö.Z.Livaneli


    olsun

    öyküler tablosu
    --------------
    id----oyku
    1---Mutluluk
    2---Kan Davası
    3---Yer Demir Gök Bakır
    4---Åž.A. Mektuplar

    olsun. burda anlatmak istediÄŸimde bu

    senin eşleştirme yaptığın id ler kendi içinde tanımlı

    yazarlar.id=oykuler.id

    bir sorgu yazarlar 2 için (Yaşar Kemal) öyküler 2yi (Kan Davası) verecektir. ve buda tamamen yanlış olacaktır
  • 04-05-2009, 23:10:20
    #9
    Hayır şu haliyle tamamen doğru sonuçar veriyor.
    Tek sorunum daha fazla TABLO 'yu bu işe katmaktır.

    Şu şekilde de bir hocamız vermiş, bu da çalıştı:

    $sql = mysql_query("SELECT id, baslik FROM oykuler ORDER BY tarih DESC");
    while ( $row = mysql_fetch_assoc($sql) )
    {
    $sql2 = mysql_query("SELECT id, adsoyad FROM yazarlar WHERE id='".$row['id']."'");
    $row2 = mysql_fetch_assoc($sql2);
    echo $row['baslik'].' - '.$row2['adsoyad'].'<br>';