2012-02-21 3 views
-1

아래의 MySQL 쿼리에 문제가 있습니다. 그러나 문제를 찾을 수 없습니다. 오류를 반환하지는 않지만 아래 쿼리는 1 행을 반환해야하지만 아무 것도 반환하지 않습니다.MySQL 쿼리가 0을 반환하는 동안 1을 반환해야합니다.

테이블 '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

에서 행을 제외됩니다 NULL과 모든 비교? –

+0

실제로 결과를 반환하지만, 두 가지 중 하나가 아니라 둘 다 사양에 맞는 제품을 얻는 것을 원하지 않습니다. 제품 필터에 대한 쿼리입니다. – Boyd

+0

오 ... 좋아요, 다음 번에 질문에 지정하십시오 : P –

답변

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

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

0

checke NULL 값의 경우 :

fws_product.CATID 
webits_product_has_kenmerken.kenmerk_id 
webits_product_has_kenmerken.kenmerk_value 

3 'AND`는`OR`되어서는 안된다는 reult

관련 문제