• 14-03-2015, 13:58:58
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhabalar Arkadaşlar

    2 Gündür bu sorguda kafayı yiyeceğim, konuya hakim arkadaşlar yardımcı olabilirmi

    E ticaret sitesi için sizgeç sistemi yaptım,
    Süzgeç tablom aşağıdaki şekilde


    benim amacım 15 ve 7 nolu filteyi işaretlendiğinde 15 ve 7 nolu ürünlerin gelmesini istiyorum,

    Şu anda ne aşamadayım

     SELECT urunler.*
    FROM urunler LEFT JOIN suzgec_index 
    ON urunler.urun_no=suzgec_index.urun_no
    AND suzgec_index.filtre_no=15 AND suzgec_index.filtre_no=15
    15 nolu filteyi seçen ürünler geliyor sorun yok,
     SELECT urunler.*
    FROM urunler LEFT JOIN suzgec_index 
    ON urunler.urun_no=suzgec_index.urun_no
    AND suzgec_index.filtre_no=15 AND suzgec_index.filtre_no IN(15,7)
    denedim 15 veya 7 yi seçeneler geldi OR gibi.
     SELECT urunler.*
    FROM urunler LEFT JOIN suzgec_index 
    ON urunler.urun_no=suzgec_index.urun_no
    AND suzgec_index.filtre_no=15 AND suzgec_index.filtre_no=15 AND suzgec_index.filtre_no=7 AND
    denedim boş geldi, yine olmadı

    bu şöyleki cep telefonu kategorisinde girdiğinde yan süzgeçten işletim sistemini seçtiğinde geliyor, ama işletim sistemi ve 1-2 tane de hafıza boyutu vb diğer süzgeçleri seçtiğinde çalışmıyor.

    Nerde hata yaptığımı iletip örnek sql kodunu iletebilirseniz memnun olurum.
    yardımlarınızı bekler herke iyi hafta sonları dilerim.
  • 15-03-2015, 00:26:58
    #2
    ylv
    Üyeliği durduruldu
    alperen060 adlı üyeden alıntı: mesajı görüntüle
    Merhabalar Arkadaşlar

    2 Gündür bu sorguda kafayı yiyeceğim, konuya hakim arkadaşlar yardımcı olabilirmi

    E ticaret sitesi için sizgeç sistemi yaptım,
    Süzgeç tablom aşağıdaki şekilde


    benim amacım 15 ve 7 nolu filteyi işaretlendiğinde 15 ve 7 nolu ürünlerin gelmesini istiyorum,

    Şu anda ne aşamadayım

     SELECT urunler.*
    FROM urunler LEFT JOIN suzgec_index 
    ON urunler.urun_no=suzgec_index.urun_no
    AND suzgec_index.filtre_no=15 AND suzgec_index.filtre_no=15
    15 nolu filteyi seçen ürünler geliyor sorun yok,
     SELECT urunler.*
    FROM urunler LEFT JOIN suzgec_index 
    ON urunler.urun_no=suzgec_index.urun_no
    AND suzgec_index.filtre_no=15 AND suzgec_index.filtre_no IN(15,7)
    denedim 15 veya 7 yi seçeneler geldi OR gibi.
     SELECT urunler.*
    FROM urunler LEFT JOIN suzgec_index 
    ON urunler.urun_no=suzgec_index.urun_no
    AND suzgec_index.filtre_no=15 AND suzgec_index.filtre_no=15 AND suzgec_index.filtre_no=7 AND
    denedim boş geldi, yine olmadı

    bu şöyleki cep telefonu kategorisinde girdiğinde yan süzgeçten işletim sistemini seçtiğinde geliyor, ama işletim sistemi ve 1-2 tane de hafıza boyutu vb diğer süzgeçleri seçtiğinde çalışmıyor.

    Nerde hata yaptığımı iletip örnek sql kodunu iletebilirseniz memnun olurum.
    yardımlarınızı bekler herke iyi hafta sonları dilerim.
    bu sorgu için LEFT JOIN değil INNER JOIN kullanın

    SELECT urunler.*
    FROM urunler INNER JOIN suzgec_index
    ON urunler.urun_no=suzgec_index.urun_no
    AND suzgec_index.filtre_no IN(15,7)

    veya

    SELECT urunler.*
    FROM urunler INNER JOIN suzgec_index
    ON urunler.urun_no=suzgec_index.urun_no
    AND (suzgec_index.filtre_no=15 || suzgec_index.filtre_no=7)

    veya

    http://dev.mysql.com/doc/refman/5.1/...ubqueries.html
  • 15-03-2015, 01:13:35
    #3
    ylv adlı üyeden alıntı: mesajı görüntüle
    bu sorgu için LEFT JOIN değil INNER JOIN kullanın

    SELECT urunler.*
    FROM urunler INNER JOIN suzgec_index
    ON urunler.urun_no=suzgec_index.urun_no
    AND suzgec_index.filtre_no IN(15,7)

    veya

    SELECT urunler.*
    FROM urunler INNER JOIN suzgec_index
    ON urunler.urun_no=suzgec_index.urun_no
    AND (suzgec_index.filtre_no=15 || suzgec_index.filtre_no=7)

    veya

    http://dev.mysql.com/doc/refman/5.1/...ubqueries.html
    merhabalar. iki sqlde de 15 veya 7 olanlar geliyor.
    ben 15 ve 17 olan ürünleri listelemek istiyorum,
    malesef çalışmadı
  • 15-03-2015, 02:32:59
    #4
    Sol taraftaki süzgecten gelen input değerin sabit olsun. Ornegin filtre.

    <input name="filtre[]" value="OZELLIK ID" type="checkbox"/>

    Bunu array seklinde tanımlayıp her birisi için valuesine o ozelliğin id numarasını tanımlayacaksın.

    Solda buyuk ihtimalle gerekli secimleri yaptıktan sonra submit ediyorsun, eğer etmiyorsan da ajax ile işlediğin php dosyanı buna göre düzenleyebilirsin. Mantıgını soyleyeyim gerisini halledeceğini umuyorum.



    $filtreler = $_POST['filtre'];
    if(!empty($filtreler)) {
    foreach($filtreler as $v){
    if($v!=''){
    $ozelsorgu.="and locate('$v',suzgec_index.filtreno) ";
    }
    }
    }
    Sorgunda eger where kullanıyorsan where'nin bittiği yerin sonunda $ozezlsorgu diye ekle. Eğer kullanmıyorsan aşağıdaki gibi yapıp oyle ekle

    $filtreler = $_POST['filtre'];
    if(!empty($filtreler)) {
    foreach($filtreler as $v){
    if($v!=''){
    $ozelsorgu.="locate('$v',suzgec_index.filtreno) and ";
    }
    }
    $ozelsorgu = 'where '.$ozelsorgu;
    }
    Yapamazsan pm ile team gonder yardımcı olayım.
  • 15-03-2015, 15:14:48
    #5
    ylv
    Üyeliği durduruldu
    alperen060 adlı üyeden alıntı: mesajı görüntüle
    merhabalar. iki sqlde de 15 veya 7 olanlar geliyor.
    ben 15 ve 17 olan ürünleri listelemek istiyorum,
    malesef çalışmadı
    yapmak istediğini yeni idrak edebildim.

    filtre no su 15 ve 17 olup ortak urun no ya sahip satırları çekmek istiyorsun.

    sağlıklı bir sorgu şuan aklıma gelmedi ama işini görücek bir sorguyu özel mesajla yazıp gönderiyorum.

    bu durumu araştıracağım.
  • 15-03-2015, 18:00:30
    #6
    Bende cok ugrasmıstım , o saglıklı sorguyu birde burda yazarsan memnun olurum dostum. Benım bulabildiğim en iyi yöntem buydu cunku.
  • 15-03-2015, 19:51:17
    #7
    ylv
    Üyeliği durduruldu
    Erturk adlı üyeden alıntı: mesajı görüntüle
    Bende cok ugrasmıstım , o saglıklı sorguyu birde burda yazarsan memnun olurum dostum. Benım bulabildiğim en iyi yöntem buydu cunku.
    arkadaşa özel mesaj ile gönderdiğimi biraz daha düzelttim şimdi.

    sağlıksız gördüğüm sql sorgusu
    SELECT urun_no FROM (SELECT urun_no,COUNT(urun_no) AS cc FROM suzgec_index WHERE filtre_no IN (15,7) GROUP BY urun_no) AS temp WHERE temp.cc=2
    daha iyisi öğrendiğimde konuda paylaşacağım.

    iyi çalışmalar