• 28-04-2018, 01:09:32
    #1
    Selamlar herkese bol kazançlar iyi günler dilerim.
    SQL Sorgusunda problem yaşamaktayım. Kriterler tutmasına rağmen ilanlar gelmiyor. Nedeni ne olabilir ?

    SELECT * FROM ilanlar i INNER JOIN ilanlar_ozellikler izo ON i.IlanID=izo.IlanID INNER JOIN ilce ilc ON ilc.ILCE_ID=i.IlanILCE INNER JOIN il ils ON ils.IL_ID=i.IlanSEHIR WHERE i.IlanKATEGORI=1 AND i.IlanTIPI=1 AND i.IlanARSIV=0
    AND (izo.OzellikID=2 AND( izo.KarsilikID=25 OR izo.KarsilikID=26))
    AND (izo.OzellikID=9 AND( izo.KarsilikID=139 OR izo.KarsilikID=140))



  • 28-04-2018, 01:25:25
    #2
    dönen sonuçta benzer kolon adlarından olabilir. özellikle tabloların primary key isimleri aynı olabilir. onları bir kontrol edin. Select * yerine gerekli olan kolonları yazmayı deneyin.
  • 28-04-2018, 01:29:15
    #3
    mindwalker adlı üyeden alıntı: mesajı görüntüle
    dönen sonuçta benzer kolon adlarından olabilir. özellikle tabloların primary key isimleri aynı olabilir. onları bir kontrol edin. Select * yerine gerekli olan kolonları yazmayı deneyin.
    Primary keyler aynı değil. Tüm kolonların gelmesi lazım. Maalesef. Teşekkür ederim hocam.
  • 28-04-2018, 01:32:10
    #4
    tablonuzu atar mısınız
  • 28-04-2018, 01:32:14
    #5
    Tabloları görmeden bu sorguya bakarak nasıl çözüm üretilebilir hocam.
  • 28-04-2018, 01:34:12
    #6
    Bir de hatırladigim kadariyla en fazla 2 join yapiliyor. 3. icin soyle kullanmalisiniz

    select * from (select * from ilktablo ilk inner join ikincitablo iki on ...) birincieslesen inner join ucuncutablo as uc on birincieslesen.id = uc.id
  • 28-04-2018, 01:34:19
    #7
    izo.OzellikID=2 ve izo.OzellikID=9 ikisini de AND koşuluna bağlamışsın . aynı anda izo.OzellikID iki farklı değer alamaz tahmin ediyorum.

    SELECT * FROM ilanlar i INNER JOIN ilanlar_ozellikler izo ON i.IlanID=izo.IlanID INNER JOIN ilce ilc ON ilc.ILCE_ID=i.IlanILCE INNER JOIN il ils ON ils.IL_ID=i.IlanSEHIR WHERE i.IlanKATEGORI=1 AND i.IlanTIPI=1 AND i.IlanARSIV=0
    AND (izo.OzellikID=2 AND( izo.KarsilikID=25 OR izo.KarsilikID=26))
    OR (izo.OzellikID=9 AND( izo.KarsilikID=139 OR izo.KarsilikID=140))



    bu şekilde sorguyu dene bir de
  • 28-04-2018, 01:44:55
    #8
    hesapadim adlı üyeden alıntı: mesajı görüntüle
    tablonuzu atar mısınız
    maviuan adlı üyeden alıntı: mesajı görüntüle
    Tabloları görmeden bu sorguya bakarak nasıl çözüm üretilebilir hocam.



    Tablolar konuya eklendi.


    hesapadim adlı üyeden alıntı: mesajı görüntüle
    Bir de hatırladigim kadariyla en fazla 2 join yapiliyor. 3. icin soyle kullanmalisiniz
    hesapadim adlı üyeden alıntı: mesajı görüntüle
    select * from (select * from ilktablo ilk inner join ikincitablo iki on ...) birincieslesen inner join ucuncutablo as uc on birincieslesen.id = uc.id

    Hocam joinlerde sorun yok. 100 joinde eklenebilir. Bu şekilde teşekkür ederim.

    mindwalker adlı üyeden alıntı: mesajı görüntüle
    izo.OzellikID=2 ve izo.OzellikID=9 ikisini de AND koşuluna bağlamışsın . aynı anda izo.OzellikID iki farklı değer alamaz tahmin ediyorum.

    Hocam parantezlerin amacı o zaten. Burada anlatılmak istenen şu


    ÖzellikID'si 2 olan ve aynı zamanda karşılıkları 25 veya 26 olan kayıtlar ile
    ÖzellikID='si 11 olan ve aynı zamanda karşılıkları 139 veya 140 olan kayırrları getir
  • 28-04-2018, 01:49:40
    #9
    Bay_Keskin adlı üyeden alıntı: mesajı görüntüle
    Tablolar konuya eklendi.


    [COLOR=initial]


    Hocam joinlerde sorun yok. 100 joinde eklenebilir. Bu şekilde teşekkür ederim.




    Hocam parantezlerin amacı o zaten. Burada anlatılmak istenen şu


    ÖzellikID'si 2 olan ve aynı zamanda karşılıkları 25 veya 26 olan kayıtlar ile
    ÖzellikID='si 11 olan ve aynı zamanda karşılıkları 139 veya 140 olan kayırrları getir
    işte bu iki koşul arasında or kullanmalısın.