こんにちは。
以下のような多対多構造のテーブルがあったときの質問です。
【テーブル構造】
test_cases
・id
・name
test_case_test_conditions
・id
・test_cases_id
・test_condition_id
test_conditions
・id
・name
【その他の前提】
このとき、アプリケーション側の仕様として、
test_casesに対してtest_case_test_conditionsの組み合わせを一意とします。
ex.
OKパターン
test_case_test_conditions
id | test_cases_id | test_condition_id |
---|---|---|
1 | 1 | 1 |
2 | 1 | 2 |
3 | 2 | 1 |
NGパターン
test_case_test_conditions
id | test_cases_id | test_condition_id |
---|---|---|
1 | 1 | 1 |
2 | 1 | 2 |
3 | 2 | 1 |
4 | 2 | 2 |
【質問】
SQLで以下の条件のデータを取得するにはどのようにしたら良いでしょうか?
1.指定したtest_conditionの組み合わせがすでに存在するか?
2.指定したtest_conditionをすべて持つtest_conditonをselectする。
ex: test_conditon_id[1,2]が指定されたときに、test_condition_id[1,2][1,2,3]や[1,2,4]など指定したtest_conditon以上の条件で絞り込みたい。
3.指定したtest_conditionの一部のみを持つtest_conditonをselectする。
ex: test_conditon_id[1,2,3]が指定されたときに、test_condition_id[1,2,3][1,2]や[1][2][3]など指定したtest_conditon以下の条件で絞り込みたい。[1,4]など指定していないtest_conditon_idを持つものは除外したい。
指定したtest_conditionはアプリケーション側から動的に指定されます。
複雑なSQLとなり、困惑して思考停止気味です。。。
アイデアが思いついた方、お手数ですがアドバイスいただけると幸いです。
回答4件
あなたの回答
tips
プレビュー