私はこれを使ってグーグルで数時間ローミングしています。
2つのテーブルがあります:
AccountTable
ID | AccountID | OrderID
OrderTable
ID | OrderID | OrderStatus
OrderStatusの値は1、2、3、4で、4は完了ステータスです。
注文テーブルでは、注文ステータスが更新されるときに複数の行が追加されます。したがって、完了した注文の場合、OrderTableにはそれぞれ1、2、3、および4のステータスを持つ4つの行があります。
1つのアカウントで複数の注文を行うことができます。
すべての注文が完了したアカウントを見つけたいです。
私はこれまで見つけました:
select * from AccountTable
INNER JOIN OrderTable
ON AccountTable.OrderID = OrderTable.OrderID
AND OrderTable.OrderStatus = 4
これにより、完了ステータスの注文が少なくとも1つあるアカウントが選択されます。
ただし、これは、1つの注文が完了し、同じアカウントの他の注文が完了していない場合のシナリオには適用されません。その時はアカウントを選びたくありません。
編集:これを明確にするためにいくつかのデータを表示したかっただけです:
AccountTable
1 | Name1 | Order1
2 | Name1 | Order2
3 | Name2 | Order3
4 | Name2 | Order4
OrderTable
1 | Order1 | 1
2 | Order1 | 2
3 | Order1 | 3
4 | Order2 | 1
5 | Order2 | 2
6 | Order2 | 3
7 | Order2 | 4
8 | Order3 | 1
9 | Order3 | 2
10 | Order3 | 3
11 | Order3 | 4
12 | Order4 | 1
13 | Order4 | 2
14 | Order4 | 3
15 | Order4 | 4
Name1ではなくName2のみを取得したい。