この選択を作成する方法に完全に行き詰まっています。ステータス テーブルから、ステータス 2 を持たないものだけを選択する必要がありますorder_id
。
ここに表があります:
+----+---------+---------+--
| id | order_id| status |
+----+---------+---------+--
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 1 |
| 4 | 2 | 2 |
| 5 | 3 | 1 |
| 1 | 3 | 3 |
| 2 | 4 | 2 |
| 3 | 4 | 1 |
| 4 | 4 | 2 |
| 5 | 5 | 3 |
+----+---------+----------+--
だから彼は結果を選択するだけですorder_id = 5
助けてください!
ステータス 1 の注文を含め、ステータス 3 の注文を除外する場合は、同様のアイデアを使用できます。
having sum(case when status_id = 1 then 1 else 0 end) > 0 and
sum(case when status_id = 3 then 1 else 0 end) = 0
編集: 私はそれらの order_id を除外したい:
- ステータス 1 のみ (ステータス 2 ではない)
- および
- ステータス 3 を持つ
次のようなテーブルを用意します。
id--order-id-Prod---Status
------------------------------
1 1 a 1
6 1 b 2
7 1 a 2
8 1 b 1
9 2 a 1
10 3 a 1
11 3 b 1
12 3 a 2
13 3 b 2
14 4 a 1
15 4 b 1
16 5 a 1
17 5 b 1
18 5 a 2
19 5 b 2
20 5 a 3
21 5 b 3
選択すると、order_id "5" のみが表示されます