[pgsql-jp: 31756] SQLの使い方について

K-ML kml @ robox.org
2003年 12月 11日 (木) 11:27:15 JST


はじめまして。児玉と申します。

SQLの使い方について質問させて下さい。

下記の顧客データ(テーブル名:customer)と顧客の注文データ(テーブル
名:c_order)があるとします。

customerの内容

id|name
--+----
1 |John
2 |Paul
3 |George
4 |Ringo

c_orderの内容

id|product
--+-------
1 |みかん
1 |りんご
2 |みかん
2 |いちご
3 |みかん
3 |りんご
3 |いちご
4 |みかん
4 |りんご

この内容で、みかん、りんご、いちごの3つ「すべて」を注文した人のデータ
を取り出したいのですが、どのようにすればよいのでしょうか。

3つの「いずれか」の場合は

SELECT * FROM customer NATURAL INNER JOIN c_order
   WHERE product IN ('みかん','りんご','いちご');

で良いのですが、上記の「すべて」のデータ取得でひっかかっています。
みなさまのお知恵をお貸し下さい。m[_ _]m

ちなみに、苦肉の策として下記の構文を考えましたが、
ちょっとすっきりしません。

SELECT * FROM customer NATURAL INNER JOIN c_order
   WHERE id IN (
     SELECT DISTINCT id FROM c_order
       WHERE product IN ('みかん','りんご','いちご')
       GROUP BY id
       HAVING COUNT(*) >= 3);


以上、よろしくお願いいたします。

    ._____.
  .-| o o |-.   ROBOX Co.,Ltd. <http://www.robox.org/>
  | |  -  | |   Kodama Shuji:<kodama @ robox.org>
  A *-----* A   TEL:0985-61-9830   FAX:0985-61-9831




pgsql-jp メーリングリストの案内