前提
DBはオラクルでプログラムはPHPで開発しています。
実現したいこと
多対多のテーブルからSQLでデータを取得する条件の書き方について、検索条件を複数指定する書き方がどうしても分からず困っています。文章で説明するのが難しいので、具体的な例を下記に記載します。
具体的なテーブル構造とデータ
社員テーブル、グループテーブル、社員グループリンクテーブルがあります。
1人の社員は複数のグループに所属し、1つのグループには複数の社員が所属します。
社員
A
B
C
グループ
G1
G2
社員グループリンク
A、G1
B、G1
B、G2
C、G2
上記では社員Bだけが2つのグループに所属しています。
データ抽出する際の条件
この状態のデータを検索する画面を作りたいのですが、画面からはグループを検索条件に社員を抽出したいです。
そして、ここが1番のネックなのですが、グループの検索条件を複数指定し、and条件、or条件を選んで抽出したいのです。
検索条件と期待される抽出結果
(1)G1だけ⇒A、Bを抽出
(2)G2だけ⇒B、Cを抽出
(3)G1orG2⇒A、B、Cを抽出
(4)G1andG2⇒Bを抽出
(1)~(3)はSQLを作成できたのですが、(4)を満たすSQLがどうにも作成できません。
検索条件に指定されたグループの分だけプログラムでjoin句を生成して抽出する方法を考えたのですが、理論上条件指定できるグループに上限が無いので妥当な方法では無いような気がしています。
どうやってググったら良いかの検討もついていない状況なので、検索のヒントだけでも教えていただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/07 14:28
2020/02/10 13:51