0

产品

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

产品类别

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

产品类别Rel

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)
4

2 回答 2

2

您可以使用 anEXISTS检查多次。

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)
于 2012-04-16T19:50:54.223 回答
0

或者,如果您想查找属于多个类别的所有产品(不仅仅是类别 1 和 2),请尝试以下操作:

SELECT *
FROM products
WHERE productID IN (
    SELECT productID
    FROM productCategiresRel
    GROUP BY productID
    HAVING COUNT(*) > 1
);
于 2012-04-16T19:58:54.727 回答