私は、在庫のある商品のみを返す2つのテーブルのデータを使用してSelect文を作成しようとしていましたが、問題があります。 私は2つのテーブルを持っています。 1つはプロダクト、もう1つはオーダーです。製品内のデータは静的です。左の数量に基づいて行を選択する方法
のテーブルは、これらの線
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
しかし、注文された製品の結果のみが返されます。 HAVE'NTは含まれていません(id 3、5、8の製品を入手する必要があります)。
2つの選択クエリを1つにまとめることができますが、私はどのように注文商品を入手するのか分かりません。
SELECT p.ProductID, p.TotalQuantity
FROM Products p
JOIN Orders o
ON o.ProductID != p.ProductID
これは期待値を返しません。
あなたの方法については
使用しているデータベースで質問にタグを付ける必要があります(ただし、この場合は答えには影響しません)。 –