次のテーブル構造があります。
uid | product_code
---------------------
00001 | 'tb'
00001 | 'im'
00001 | 'ip'
00002 | 'tb'
00002 | 'im'
3 つの製品コード 'mg'、'ip'、'tb' をすべて持つ uid を表示する selfjoin クエリが必要です。つまり、00001 のみが表示されます。どうすればそれができますか?
次のテーブル構造があります。
uid | product_code
---------------------
00001 | 'tb'
00001 | 'im'
00001 | 'ip'
00002 | 'tb'
00002 | 'im'
3 つの製品コード 'mg'、'ip'、'tb' をすべて持つ uid を表示する selfjoin クエリが必要です。つまり、00001 のみが表示されます。どうすればそれができますか?
SELECT sj1.uid FROM tbl sj1
JOIN tbl sj2 ON sj1.uid = sj2.uid
JOIN tbl sj3 ON sj1.uid = sj3.uid
WHERE sj1.product_code = 'tb'
AND sj2.product_code = 'im'
AND sj3.product_code = 'mg'
より多くの製品コードがある場合にも機能するはずです。
select uid from mytable
where product_code in ('mg','ip','tb')
group by uid having count(distinct(product_code))=3;
商品コード
Select * from table group by uid having count(uid) =
3を3つだけお持ちの場合