• 19-05-2014, 11:47:26
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    merhaba arkadaslar join ile menu karti yapmaya calisiyorum ve
    ve bi anda kafam durdu mekan id göre kategorie ve kategoriye ait olan icerikleri yane menuleri cekmek istiyorum


    mekan_tablo
    --id
    --isim

    CREATE TABLE IF NOT EXISTS `mekan` (
      `id` int(11) NOT NULL,
      `baslik` varchar(112) NOT NULL,
      PRIMARY KEY (`id`,`baslik`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    mekan_yemek_tablo
    --mekan id
    --yemek isim
    --yemek aciklama
    CREATE TABLE IF NOT EXISTS `mekan_menu_yemekler` (
      `menu_id` int(11) NOT NULL DEFAULT '0',
      `menu_baslik` text NOT NULL,
      PRIMARY KEY (`menu_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    mekan_yemek_kat_tabloso
    --id
    --isim
    CREATE TABLE IF NOT EXISTS `mekan_menu_card_kat` (
      `kat_id` int(11) NOT NULL,
      `text` varchar(110) NOT NULL,
      PRIMARY KEY (`kat_id`,`text`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    <?php
    
    
    
    
    
    $db=mysql_connect ("localhost","root","");
    $db = mysql_select_db("join");
    $id = 63;
    $select_rechnung = mysql_query("SELECT k.id, r.text,  i.menu_baslik AS menu
    from mekan k
    
    
    
    INNER JOIN mekan_menu_yemekler i ON i.menu_id = k.id
    INNER JOIN mekan_menu_card_kat r ON k.id = i.menu_id
    
    
    
    WHERE k.id='.$id.'")or die(mysql_error());
    
    while($row = mysql_fetch_assoc($select_rechnung))
    
    {
    
    echo "<hr> <h2>mekan " .$row['id']."</h2>";
    echo "<hr> <h2>mekanCategori.: " .$row['text']."</h2>";
    echo "<hr> <h2>mekanYemek.: " .$row['menu']."</h2>";
    
    
    
    
    }
    
    ?>
  • 28-05-2014, 05:56:46
    #2
    öncelikle olur arada öyle şeyler tabloları bağlarken

    ilk şey şu, bazı parametreler eksik, mekanlar ile mekan yemek kategorisini bağlaman için ya mekan yemeklerine kategori no eklemen gerek ya da mekan'a kategori no eklemelisin.

    şimdi tablolara yeniden bakalım.
    mekan
    --mekan_id
    --mekan_isim
    --kategori_id

    mekan_yemek
    --mekan_id
    --yemek_id
    --yemek_isim
    --yemek_aciklama

    mekan_yemek_kategorileri
    --kateogri_id
    --kategori_isim


    SQL :
    select * from mekan_tablo as M inner join mekan_yemek as MY on M.mekan_id=MY.mekan_id inner join mekan_yemek_kategorileri as MYK on MYK.kategori_id=M.kategori_id

    bu sorgu 3 şartı da sağlarsa veri getirecektir. yani bir mekan olacak, mekan'ın yemekleri olacak, ve mekan kategori ile eşlenmiş olacak. Peki mekan'a henüz hiç yemek eklenmediyse ne olacak ? Veri gelmeyecek onun için left join kullanmamız gerekecek.

    SQL 2:
    select * from mekan_tablo as M inner join mekan_yemek_kategorileri as MYK on MYK.kategori_id=M.kategori_id left join mekan_yemek as MY on M.mekan_id=MY.mekan_id

    şeklinde yazarsak sanırım mekan'a yemek eklenmemiş olsa da, mekan yemek kategorisi gelecektir