Я уже в течение нескольких часов путешествую в Google.SQL - найдите учетную запись, для которой все заказы завершены.
Две таблицы есть:
AccountTable
ID | AccountID | OrderID
OrderTable
ID | OrderID | OrderStatus
OrderStatus может иметь значения 1,2,3,4 с 4 Завершается статуса.
В таблице заказа добавляется несколько строк при обновлении статуса заказа. Итак, для выполненного заказа у вас будет 4 строки с 1, 2, 3 и 4 статусами соответственно, в OrderTable.
Отдельная учетная запись может иметь несколько заказов.
Я хочу найти учетные записи, для которых все заказы завершены.
я нашел до этого много:
select * from AccountTable
INNER JOIN OrderTable
ON AccountTable.OrderID = OrderTable.OrderID
AND OrderTable.OrderStatus = 4
Это будет забрать счета, для которых есть по крайней мере один порядок завершенного статуса.
Но это не будет охватывать сценарий, когда один заказ будет завершен, а другой заказ для той же учетной записи - нет. Тогда я не хочу выбирать учетную запись.
EDIT: Я просто хотел показать некоторые данные, чтобы сделать это более ясным:
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
Я хочу, чтобы получить только Имя2 и NOT name1.
Похоже, что у одной учетной записи может быть только 1 заказ, однако такой же порядок может существовать для многих учетных записей. –
Нет, одна учетная запись может иметь много заказов, и каждый заказ будет иметь самое большое 4 строки в таблице заказов – redDevil
Oracle *** 9i ***?В самом деле? Это уже давно не поддерживается. –