• 01-10-2010, 18:16:11
    #1
    Merhaba arkadaşlar. Soru şu:
    2 tablo var.

    1. siparis
    2. odeme

    siparis tablosundaki "odemeNo" diye bir alanda o siparişe ait ödemenin odeme tablosundaki "no" alanının değeri var.

    odeme tablosunda "durum" diye bir alanda ödemenin yapılıp yapılmadığı tutuluyor. (0=ödenmedi, 1=ödendi)

    Daha anlaşılır olması için basitçe tablo yapısını vereyim:
    siparis tablosu: no, odemeNo
    odeme tablosu: no, durum

    Benim istediğim siparis tablosundaki ödemesi yapılmış siparişleri SELECT ile getirmek.
    Yani "odemeNo" alanına bakacak, odeme tablosundan "durum" alanına bakacak 1 ise siparişi getirecek.

    Bunu tek sql sorgusu ile yapmak mümkün müdür? Yardımcı olacaklara şimdiden teşekkürler...
  • 01-10-2010, 18:22:37
    #2
    $sql=mysql_query("select siparis.no as siparisno from siparis left join odeme on (siparis.odemeNo=odeme.no) where odeme.durum=1");
    İşini görür herhalde
  • 01-10-2010, 18:35:53
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    $sorgu = mysql_query("SELECT s.no AS odenmis
    FROM siparis AS s
    	INNER JOIN odeme AS o ON (o.no = s.odemeNo)
    WHERE o.durum = 1");
    $odenmisler = array();
    while ($satir = mysql_fetch_assoc($sorgu))
    	$odenmisler[] = $satir['odenmis'];
    mysql_free_result($sorgu);
    
    foreach ($odenmisler as $odenmis)
    	echo $odenmis, '<br />';
  • 02-10-2010, 22:05:52
    #4
    İşimi gördü teşekkürler. left join ile INNER JOIN arasındaki fark nedir?
  • 02-10-2010, 22:09:09
    #5
    yemekim adlı üyeden alıntı: mesajı görüntüle
    İşimi gördü teşekkürler. left join ile INNER JOIN arasındaki fark nedir?
    INNER JOIN, sadece koşula uyan satırları getirir. LEFT JOIN ise, tüm sonuçları. Bu nedenle LEFT JOIN'de beklediğinizden daha fazla sonuçlar elde edebilirsiniz.
  • 02-10-2010, 22:18:13
    #6
    Peki bir de şunu sorabilir miyim? siparis tablosunda odemeYontemi diye bir alan daha var eğer odemeYontemi=1 ise odeme tablosuna bakmadan direk siparişi getirsin istiyorum. where koşuluna şunu ekledim ama olmadı.
    WHERE siparis.odemeYontemi=1 OR odeme.durum=1
  • 02-10-2010, 23:21:02
    #7
    inner join yaptığım için olmuyormuş. left join yaptım. Yukarıda da belirtmiştiniz arasındaki farkı.