我一直在嘗試使用兩個表中的數據進行Select語句,該語句將僅返回庫存中的產品,並且遇到問題。 我有2張桌子。一個列出產品,另一個訂單。產品中的數據是靜態的。如何根據剩餘數量選擇行
表可以使用這些線路
create table Products (ProductID integer, TotalQuantity integer);
insert into Products values (1, 1);
insert into Products values (2, 2);
insert into Products values (3, 20);
insert into Products values (4, 10);
insert into Products values (5, 20);
insert into Products values (6, 10);
insert into Products values (7, 5);
insert into Products values (8, 50);
insert into Products values (9, 1);
create table Orders (OrderID integer, ProductID integer, Amount integer);
insert into Orders values (6, 4, 1);
insert into Orders values (6, 6, 1);
insert into Orders values (6, 1, 1);
insert into Orders values (47, 4, 1);
insert into Orders values (6, 9, 1);
insert into Orders values (5, 7, 1);
insert into Orders values (6, 2, 2);
和表格創建這個樣子(如果這是更容易查看
產品表
訂單表
我通過以下查詢取得了部分成功
SELECT p.ProductID, p.TotalQuantity
FROM Products p
JOIN Orders o
ON o.ProductID = p.ProductID
GROUP BY p.ProductID, o.Amount, p.TotalQuantity
HAVING SUM(o.Amount) < p.TotalQuantity
但是,這隻會返回已訂購產品的結果。那些沒有包括在內(應該得到id爲3,5,8的產品)。
我讀過,我可以將2選擇查詢合併爲一個,但我不知道如何得到不訂購的產品。
SELECT p.ProductID, p.TotalQuantity
FROM Products p
JOIN Orders o
ON o.ProductID != p.ProductID
這不會返回預期值。
你應該用你正在使用的數據庫標記問題(儘管在這種情況下它不影響答案)。 –