-2

次の列を持つテーブルがあります

  • 商品タイプ
  • brand_id

brand_ids A と B が必要ですが、 C は必要ありません

このテーブルでは、product_type は同じで、brand_id が異なる複数のレコードを持つことができます。

それは、INNER SELF JOIN の必要性でしょうか? またはそうするより良い方法はありますか?

4

3 に答える 3

4
SELECT A.product_type
FROM product_table A
JOIN product_table B ON A.product_type = B.product_type
LEFT JOIN product_table C ON A.product_type = C.product_type
                         AND c.brand_id = 'C'
WHERE A.brand_id = 'A'
  AND B.brand_id = 'B'
  AND c.brand_id IS NULL
于 2012-07-10T19:57:22.800 に答える
0

(PRODUCT_TYPE, BRAND_ID)それがあなたのテーブルのユニークキーであると仮定します。

これが私があなたが求めていると思うことをする一つの方法です:

SELECT product_type FROM product_table
  WHERE brand_id IN ('A','B')
  GROUP BY product_type
  HAVING COUNT(*) = 2
MINUS
SELECT product_type FROM product_table
  WHERE brand_id IN ('C')
于 2012-07-10T19:39:20.677 に答える
0

このソリューションを試すことができます:

SELECT a.product_type
FROM
(
    SELECT product_type 
    FROM tbl 
    WHERE brand_id IN ('A', 'B')
    GROUP BY product_type
) a
LEFT JOIN tbl b ON a.product_type = b.product_type AND b.brand_id = 'C'
WHERE b.brand_id IS NULL
于 2012-07-10T19:54:30.540 に答える