私は論理的な問題を抱えて座っていて、ますます混乱しています。
例の表
ID | お客様 ID | タスク | 確認済み | キャンセル | 完了
1 | 20 | テキスト | 1 | 0 | 0
2 | 20 | テキスト | 1 | 1 | 0
3 | 20 | テキスト | 1 | 0 | 1
4 | 17 | テキスト | 0 | 1 | 0
5 | 17 | テキスト | 1 | 0 | 0
6 | 20 | テキスト | 1 | ヌル | ヌル
7 | 20 | テキスト | 0 | 1 | ヌル
custID = 20 のすべてのタスクを選択したいのですが、confirmed=1 です。タスクが取り消された = 1 または完了 = 1 の場合、レコードは返されません。
この場合、返される行は 1 と 6 になります。
これまでの私のクエリは
SELECT *
FROM table1
WHERE
(CustID = 20 AND Confirmed = 1 AND Cancelled <> 1 AND Completed <> 1) OR
(CustID = 20 AND Confirmed = 1 AND Cancelled = 1 AND Completed <> 1) OR
(CustID = 20 AND Confirmed = 1 AND Cancelled <> 1 AND Completed = 1)
どんな助けでも大歓迎です。