2012-02-21 107 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