• 12-05-2019, 02:35:24
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba arkadaşlar iki tablom var ben burda puanı en yüksek üyeyi göstereceğim ancak urun_durum 0 ise ve alt kategorisinde durumları 0 ise

    yani resimlere bakarsak admin 145 puanı var ama alt ürünlerinin hepsi 0 a eşit değil ama Hasan hem urun_durum 0 hemde durum ları 0 55 puanla 1. sırda yazdırmam lazım

    kodum bu, ancak bu sorguda durum 0 ise dediğim için haliyle adminin durum lardan biri 0 olunca bunuda içeriyor durumları 0 ise demem lazım nasıl bir kod yazarım bilemedim
    $sorgula=$db->prepare("SELECT * FROM urunler INNER JOIN urun ON urunler.id=urun.urun_id WHERE durum=:durum and urun_durum=:urun_durum ORDER BY urunler.puan DESC");$sorgula->execute(array(    'urun_durum' => 0,* **'durum' => 0));
    urunler tablom bu şeklilde

    urun tablom
  • 12-05-2019, 03:26:49
    #2
    Sanırım tam anlatamadınız. Admin haricindekileri mi listelemek istiyorsunuz?
  • 12-05-2019, 12:48:15
    #3
    ebubekirgns adlı üyeden alıntı: mesajı görüntüle
    Sanırım tam anlatamadınız. Admin haricindekileri mi listelemek istiyorsunuz?
    hocam urun_durum = 0 ve durum=0 a eşit olanlar görünecek, ama durum satırı birden fazla olabiliyor ve eşit olan durum ların hepsi 0 olursa o gözükecek

    tabloya bakarsak admine ait 2 ürün var bunların durum biri 0 , biri 1 e eşit yani durum ları 0 a eşit değil
    konya üyesi nin zaten urun_durum 0 a eşit değil

    ama Hasan hem urun_durum 0 a eşit hemde ayna,ve saat olan durumlar 0 a eşit

    tüm herşeyi 0 a eşit olan tek üye Hasan ama benim yazdığım sorgu admini görüyor
  • 13-05-2019, 00:40:42
    #4
    Ürün durum ve durum 0 a eşit olan 2 kişi var Admin ve Hasan ama sorguda admin dönüyor.
    ORDER BY urunler.puan DESC"
    Burda puan için DESC parametresini kullandığınız için puanı yüksekten aşağı doğru sıralar . Admin kullanıcının puanı yüksek olduğu için o gelir.
    Belki şu şekilde olur..

    $sorgula=$db->prepare("SELECT * FROM urunler INNER JOIN urun ON urunler.urun_durum=urun.durum WHERE durum = '0' and id=:urun_id ORDER BY urunler.puan  DESC");
    while($row =*$sorgula->fetch(PDO::FETCH_ASSOC)) { echo $row['k_adi']; }
    ..
    durum = '0' burdaki tırnaklara dikkat
  • 13-05-2019, 03:12:55
    #5
    MartinEdden adlı üyeden alıntı: mesajı görüntüle
    Ürün durum ve durum 0 a eşit olan 2 kişi var Admin ve Hasan ama sorguda admin dönüyor.
    ORDER BY urunler.puan DESC"
    Burda puan için DESC parametresini kullandığınız için puanı yüksekten aşağı doğru sıralar . Admin kullanıcının puanı yüksek olduğu için o gelir.
    Belki şu şekilde olur..

    $sorgula=$db->prepare("SELECT * FROM urunler INNER JOIN urun ON urunler.urun_durum=urun.durum WHERE durum = '0' and id=:urun_id ORDER BY urunler.puan DESC");
    while($row =*$sorgula->fetch(PDO::FETCH_ASSOC)) { echo $row['k_adi']; }
    ..
    durum = '0' burdaki tırnaklara dikkat
    ilgi için teşekkürler ancak hiç bir çıktı vermiyor boş sayfa...

    ayrıca durum='0' dediğimiz zaman admin durum lardan biri 0 diğeri 1 haliyle burdaki 0 okuyup bunu geçerli kılıyor

    normalde benim kodum çalışıyor ama soruyu nedense kimse anlamıyor yada anlamak istemiyor...

    şimdi yukarıda 3 üye var bunlardan urun_id si 0 a eşit ve alt ürünlerinin durum hepsi 0 a eşit olan tek üye var oda Hasan , bu durumda en yüksek puana sahip Hasan ekrana yazılacak diğerleri yazılmayacak

    anladığım bu işlem tek sorgu ile olmıyacak durumlar bir diziye aktarılıp saydırıp array_keys ile filtrelemek gibi birşeyler lazım olsa gerek

    bu soruyu 10 gündür forumlarda soruyorum çözüm bulamadım şimdilik rafa kaldırdım....
  • 15-05-2019, 00:06:05
    #6
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Ürün tablonda durum toplamını alıp, 0 olanları çekeceksin. istediğini yanlış anlamadıysam

    SELECT urunler.*, u.toplam_durum FROM urunler LEFT JOIN (select *, sum(durum) as toplam_durum from urun group by urun_id) as u ON urunler.id=u.urun_id WHERE u.toplam_durum=0 and urunler.urun_durum=0 ORDER BY urunler.puan DESC
  • 15-05-2019, 01:20:06
    #7
    acayip adlı üyeden alıntı: mesajı görüntüle
    Ürün tablonda durum toplamını alıp, 0 olanları çekeceksin. istediğini yanlış anlamadıysam

    SELECT urunler.*, u.toplam_durum FROM urunler LEFT JOIN (select *, sum(durum) as toplam_durum from urun group by urun_id) as u ON urunler.id=u.urun_id WHERE u.toplam_durum=0 and urunler.urun_durum=0 ORDER BY urunler.puan DESC
    helal olsun. ben bunda durumları array key search falan kullanarak uzun kod yığını ile çözmüştüm tek sorguda halletmişsin. bu soruyu bir aydır bir çok forumda sordum anlayan biri çıkmamıştı çok teşekkür ederim