2012-02-21 184 views
-1

我的MySQL查詢下面有什麼問題,但我找不到問題。它不返回任何錯誤,但下面的查詢應該返回1行,但它不返回任何錯誤。MySQL查詢返回0行,它應該返回一個

表'fws_product'包含所有產品。表'webits_product_has_kenmerken'包含產品規格。

SELECT fws_product.* 
FROM webits_product_has_kenmerken 
LEFT JOIN fws_product ON webits_product_has_kenmerken.product_id = fws_product.ID 
WHERE fws_product.CATID = 11 
AND ( 
(webits_product_has_kenmerken.kenmerk_id = 8 AND webits_product_has_kenmerken.kenmerk_value = 'Buddha to Buddha') 
AND 
(webits_product_has_kenmerken.kenmerk_id = 19 AND webits_product_has_kenmerken.kenmerk_value = '10 mm') 
) 

在此先感謝!

+1

是3'和'不應該'或'排除行? – 2012-02-21 13:12:39

+0

這確實返回的結果,但我不想得到符合兩個規格的產品,而不是兩個中的一個。這是產品過濾器的查詢。 – Boyd 2012-02-21 13:19:36

+0

哦......好的,下次在問題中指定:P – 2012-02-21 13:33:13

回答

2

它看起來有點討厭,但下面應該做你要求

SELECT 
    p.* 
FROM fws_product AS p 

INNER JOIN webits_product_has_kenmerken AS ps8 
    ON ps8.product_id = p.ID 
    AND ps8.kenmerk_id = 8 
    AND ps8.kenmark_value = 'Buddha to Buddha' 

INNER JOIN webits_product_has_kenmerken AS ps19 
    ON ps19.product_id = p.ID 
    AND ps19.kenmerk_id = 19 
    AND ps19.kenmark_value = '10 mm' 

WHERE p.CATID = 11 

這是可以做的工作的另一個潛在的選擇,但仍感到非常討厭

SELECT 
    p.* 
FROM fws_product AS p 
INNER JOIN (
    SELECT 
     product_id, 
     COUNT(*) AS numMatches 
    FROM webits_product_has_kenmerken 
    WHERE (kenmerk_id,kenmerk_value) IN (
      (8,'Buddha to Buddha'), 
      (19,'10 mm') 
     ) 
    GROUP BY product_id 
    HAVING numMatches = 2 
) AS ps 
ON ps.product_id = p.ID 

WHERE p.CATID = 11 
+0

非常感謝你!這正是我需要的! – Boyd 2012-02-21 13:25:38

0

我認爲你需要以下條件:

SELECT fws_product.* 
FROM webits_product_has_kenmerken 
LEFT JOIN fws_product ON webits_product_has_kenmerken.product_id = fws_product.ID 
WHERE fws_product.CATID = 11 
AND ( 
(webits_product_has_kenmerken.kenmerk_id = 8 AND webits_product_has_kenmerken.kenmerk_value = 'Buddha to Buddha') 
OR 
(webits_product_has_kenmerken.kenmerk_id = 19 AND webits_product_has_kenmerken.kenmerk_value = '10 mm') 
) 
+0

這確實會返回結果,但我不想得到符合兩種規格的產品,而不是兩種產品中的一種。這是產品過濾器的查詢。 – Boyd 2012-02-21 13:19:19

0

檢查這些列爲NULL值:

fws_product.CATID 
webits_product_has_kenmerken.kenmerk_id 
webits_product_has_kenmerken.kenmerk_value 

與NULL每個比較將從reult