※ ChatGPTを利用し、要約された質問です(原文:アンケート結果を抽出するSQL文について)
アンケート結果を抽出するSQL文について
2009/08/29 11:02
このQ&Aのポイント
SQLの抽出方法について質問です。会員テーブルと果物と色の好みを管理するテーブルがあり、抽出条件も複数選択できる場合、効率的なSQLを作成する方法を知りたいです。
テーブル【MEMBER】と【MEMBER_FRUIT】、【MEMBER_COLOR】で会員の果物と色の好みを管理しています。抽出条件を管理するテーブル【SEARCH】と【SEARCH_DETAIL】もあります。ループ処理ではなく、より効率的なSQLを教えてください。
テーブル【MEMBER】と【MEMBER_FRUIT】、【MEMBER_COLOR】で会員の果物と色の好みを管理しており、【SEARCH】と【SEARCH_DETAIL】で抽出条件を管理しています。アンケートの数だけSQLを追加する方法ではなく、効率的なSQLを教えてください。
SQLの抽出方法について質問です。
【会員】テーブル関連
すきなフルーツを複数選択できます。
テーブル【MEMBER】と【MEMBER_FRUIT】2つのテーブルで管理
例:
Aさんは「りんご」「みかん」「スイカ」がすきです。
Bさんは「りんご」「メロン」がすきです。
Cさんは「みかん」「スイカ」がすきです。
同様に「好きな色」もテーブルで管理しています。
実際はこのような管理テーブルがアンケートの数だけあります。
テーブル【MEMBER】
ID、MEMBER_CD、MEMBER_NAME
1 10 Aさん
2 20 Bさん
3 30 Cさん
・
・
テーブル【MEMBER_FRUIT】
ID、MEMBER_CD、FRUIT_CD
1 10 1
2 10 2
3 10 3
4 20 1
5 20 4
6 30 2
7 30 3
・
・
テーブル【MEMBER_COLOR】
ID、MEMBER_CD、COLOR_CD
1 10 1
2 10 2
3 10 3
4 20 1
5 20 4
6 30 2
7 30 3
・
・
テーブル【FRUIT】
ID、ITEM
1 りんご
2 みかん
3 スイカ
4 メロン
テーブル【COLOR】
ID、ITEM
1 赤
2 黄
3 青
4 白
【抽出条件】関連
条件も複数選択できます。
テーブル【SEARCH】と【SEARCH_DETAIL】2つのテーブルで管理
※会員を抽出条件を管理するテーブル
テーブル【SEARCH】
ID、TITLE
1 「りんご」または「メロン」または「赤」または「白」がすきな人
2 「スイカ」または「青」がすきな人
・
・
テーブル【SEARCH_DETAIL】
SEARCH_ID、FRUIT_CD
1 1
1 4
2 3
テーブル【SEARCH_COLOR】
SEARCH_ID、COLOR_CD
1 1
1 4
2 3
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
【SEARCH】のID1の出力結果イメージ
MEMBER_CD、MEMBER_NAME
10 Aさん
20 Bさん
こんなSQLを作成してみました。
【SEARCH】テーブルをループで1件づつ処理しようと考えています。
他にもっと効率がいいSQLがありますか?
よろしくお願いします。
※SEARCH_IDをどこかで指定しないと...
SELECT DISTINCT MEMBER.MEMBER_CD, MEMBER_NAME
FROM
MEMBER,MEMBER_FRUIT,MEMBER_COLOR
WHERE
MEMBER.MEMBER_CD = MEMBER_FRUIT.MEMBER_CD
AND
MEMBER_FRUIT.FRUIT_CD
********************************
in (
SELECT FRUIT_CD
FROM SEARCH,SEARCH_DETAIL
WHERE SEARCH.ID = SEARCH_DETAIL.SEARCH_ID
)
**********************************
AND MEMBER_COLOR.COLOR_CD
in(
SELECT COLOR_CD
FROM SEARCH,SEARCH_COLOR
WHERE SEARCH.ID = SEARCH_COLOR.SEARCH_ID
)
***の部分をアンケートの数だけ追加すればいいと
考えていますが...
みなさんはこういう場合、どのように対応してますか?
質問の原文を閉じる
質問の原文を表示する
補足
ご指導ありがとうございます。 >アンケートの種類だけテーブルを作成するという考えが間違っていると思います そうですか... アンケートの件数は3,4件と考えています。 SELECT A.ID,A.氏名 FROM 会員テーブル AS A,アンケート質問選択枝テーブル AS B WHERE B.アンケートID=1 このテーブル構成でSELECT文作成がよくわかりません。 すみません。このテーブル構成だとどのようなメリットが あるのでしょうか?