下記の条件でのSQLをなるべくデータベースに掛かるコストが軽くなるように
作成したいのですが、なかなかいい案が思いつきません。
【条件】
抽出結果としては、
下記の条件に当てはまる項目Aを出力しようと考えております。
①項目Aの値が同一である
②項目Bの値が'赤'になっているレコードが含まれている
③項目Bの値が'青'になっているレコードが含まれていない
④項目Bの値が'黄'になっているレコードが含まれていない
⑤項目Bの値が'赤'になっているレコードのみしか存在せず、2件以上の場合は抽出しない
(例)
項目A 項目B
100 赤
100 青
100 黄
200 赤
200 赤
300 赤
400 赤
400 青
400 黄
500 赤
500 赤
600 赤
600 青
上記の例の場合には、
300が結果として抽出したいということです。
有識者の方々、ご指南いただけると幸いです。
600は青が含まれているから対象外ではないのですか?
ご記載いただいている条件で、300と600が抽出される理由がわからないです。すべての条件がandで達成される場合だと300のみが結果な気がしますが。。。あってますでしょうか?
すみません!回答が誤っていたため、更新しました。ご指摘通り、300のみが抽出されます。
600は青を含んでいますが?
「①項目Aの値が同一である」とは具体的に何と同一であることを確認するのでしょうか
前回の質問は解決でしたけど、結局コストというところで解決していないのではないですか?コストが最優先なら名称は兎も角、構造やインデックス、実行計画などの状況などを提示された方が良いですよ。