mysql选择两个类别中的产品

时间:2012-04-16 19:47:52

标签: mysql select

产品

PRODUCTID;NAME
1        ;BMW
2        ;AUDI
3        ;Mercedes
4        ;Volvo

productCategories

CATID;CATNAME
1    ;Car
2    ;Motorcicle;
3    ;Bus

productCategiresRel

PRODUCTID;CATID;
1        ;1
1        ;2
2        ;1
3        ;1
4        ;3

如果我使用sql

SELECT productID FROM  productCategiresRel WHERE catID IN (1,2) 

结果是

productCategiresRel
PRODUCTID;CATID;
1        ;1
1        ;2
2        ;1
3        ;1
4        ;3

但是我希望选择这些产品,它们在两个选择的类别(汽车和摩托车)中都有代表 结果应该是

PRODUCTID;CATID;
1        ;1 (Car)
1        ;2 (Motorcicle)

2 个答案:

答案 0 :(得分:2)

您可以使用EXISTS多次检查。

SELECT *
FROM products
WHERE EXISTS (SELECT '' 
    FROM productCategiresRel 
    WHERE catID = 1
    AND productCategiresRel.productId = products.productId)
AND EXISTS (SELECT '' 
    FROM productCategiresRel 
    WHERE catID = 2
    AND productCategiresRel.productId = products.productId)

答案 1 :(得分:0)

或者,如果您想要查找多个类别中的所有产品 - 不仅仅是在类别1和类别2中 - 请尝试:

SELECT *
FROM products
WHERE productID IN (
    SELECT productID
    FROM productCategiresRel
    GROUP BY productID
    HAVING COUNT(*) > 1
);