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

を使用して、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)
于 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 に答える