2011-01-25 27 views
11
SELECT * FROM mm_tfs 
WHERE product_slug LIKE '%football%' 
    AND schoolid = '8' AND category_id ='21' 
LIMIT 4 

İstediğim gibi 4 değer döndürür, ancak aşağıdaki ifade 0 değerini döndürür - aşina olmadığım OR deyimini kullanma konusunda bir kural var mı? Benim varsayımım, tüm değerleri 1'de (ya da sınır için olmasa bile) döndürmesidir. cyberkiwi ilk ya da Q2 kısmı ileSQL LIMIT hiçbir LIMIT sonuç döndürmediğinde sonuç döndürmez

SELECT * FROM mm_tfs 
WHERE (product_slug LIKE '%football%' 
    AND schoolid = '8' AND category_id ='21') 
OR (product_description LIKE '%football%' 
    AND schoolid = '8' AND category_id ='21') 
LIMIT 4 

Not tam olarak uzun istenen sonucu vermez tek başına ya da ifade olmadan Q1

product_description LIKE '%football%' AND schoolid = '8' AND category_id ='21 

WHERE maddesi ile aynıdır limiti olmadığı için. VEYA ifadesi LIMIT ile de kullanıldığında, geri dönen 0 değer vardır.

SELECT * FROM mm_tfs 
WHERE product_description LIKE '%football%' 
    AND schoolid = '8' AND category_id ='21' 
LIMIT 4 

^- Bu

SELECT * FROM mm_tfs 
WHERE product_description LIKE '%football%' 
    AND schoolid = '8' AND category_id ='21' 

^0 sonuç

üretir - Bu üretir bu tuhaf bir parçası olan

sonuçlandığını bu sorgularda ürün benim phpMyAdmin'de sağ etkisi tüm SQL sorgu penceresi, ancak uygulamanın kendisinde değil.

+0

VEYA'ya özgü bir boole mantığı hatası olarak görünüyor. Bütün şeyi parantez etrafına sarın, yani tüm durumunuz (ve). – JonH

+0

Hayır, –

+1

değerlerini döndürür. Bu çok ilginç. Birisi alternatif bir yaklaşım vermek yerine neden yanlış olduğunu açıklayabilir mi? +1 – Nishant

cevap