
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
・
・
テーブル【FRUIT】
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】のID1の出力結果イメージ
MEMBER_CD、MEMBER_NAME
10 Aさん
20 Bさん
こんなSQLを作成してみました。
【SEARCH】テーブルをループで1件づつ処理しようと考えています。
他にもっと効率がいいSQLがありますか?
よろしくお願いします。
SELECT DISTINCT MEMBER.MEMBER_CD, MEMBER_NAME
FROM
MEMBER,MEMBER_FRUIT
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
)

No.1ベストアンサー
- 回答日時:
データベースが何か分からないのでAccessで。
SELECT DISTINCT M.MEMBER_CD, M.MEMBER_NAME
FROM SEARCH_DETAIL AS SD
LEFT JOIN (MEMBER_FRUIT AS MF
LEFT JOIN MEMBER AS M
ON MF.MEMBER_CD = M.MEMBER_CD)
ON SD.FRUIT_CD = MF.FRUIT_CD
WHERE SD.SEARCH_ID=1;
SEARCHテーブルを結合する必要はなし。
あと蛇足ですが、MEMBERテーブルのID列の存在意義がわかりません。
この回答への補足
kztkさん、ありがとうございます。
DBは、MYSQLのver5です。
SEARCHテーブルは結合する必要ないんですね!
勉強になりました。
「MEMBERテーブルのID列」は確かに意味がありません。
お客さんの要望みたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
プログラミングを学べる!?進化している子どものおもちゃについて専門家に聞いた!
プログラミングを学べるレゴブロックがあることはご存知だろうか。レゴに限らず最近のおもちゃには、プログラミングの要素がどんどん取り入れられているようだ。「教えて!goo」にも、「プログラミングを学べる子供...
-
隣の枝がはみ出してきたら切ってもいい?最もやってはいけないことは?
「隣の木が越境してきて困るが、勝手に切ってはいけないと聞くし…」そう思っている方も多いだろう。実は、2023年4月1日に民法が改正され、この「越境枝」のルールが大きく変わった。 教えて!gooでも「境界から出て...
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLを発行とは?クエリの作成と...
-
『列名 '担当者CD' があいま...
-
「テーブルに主キーがありませ...
-
VBとアクセスでSQL文に変...
-
PHPを使って掲示板の作成を...
-
Access SQLITEのリンクテーブ...
-
DAOでフィールドのデータ型を変...
-
Accessで別mdbのテーブルをコピー
-
[C#] DataGridViewでコンボボッ...
-
VB.NET データセットのEXCELへ出力
-
Access2007でアプリケーション...
-
VB.NET データセットとADOレコ...
-
種類別のテーブル作成方法について
-
DataSetの複数テーブルをひとつ...
-
DataGridViewに複数テーブルの...
-
DataGridViewのセルに改行して表示
-
【ExcelVBA】値を変更しながら...
-
COBOL数値転記の仕様
-
VBA 変数名に変数を使用したい。
-
VB6.0でアクセス2000...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
『列名 '担当者CD' があいま...
-
SQLを発行とは?クエリの作成と...
-
手動または分散トランザクショ...
-
DataGridViewに複数テーブルの...
-
VBとアクセスでSQL文に変...
-
[C#] DataGridViewでコンボボッ...
-
COBOLのINVALID KEYが理解でき...
-
[CakePHP]複数テーブルのアソシ...
-
ACCESS2010 実行時エラー 2766
-
★クリスタルレポートの元になる...
-
他のMDBのテーブルに追加したい
-
AccessからExcelへエクスポート...
-
ExcelVBAからAccessMDB内のテー...
-
エクセルのテーブルを解除する...
-
ワークテーブルの作成について
-
Accessで別mdbのテーブルをコピー
-
Access2007でアプリケーション...
-
DAOの作成単位について
-
CSVファイルのエクスポートでソ...
-
アクセステーブル、リンクとロ...
おすすめ情報