0

私は Java で単純なアプリケーションを作成していますが、1 つの SQL ステートメントでスタックしています。属性とで呼び出されitems、属性itemIdquantityで呼び出される 2 つのテーブルがあるとしorderDetailsます。テーブル Items にすべてのアイテムを保持し、orderDetails テーブルに itemId と顧客に貸し出された数量を保持します。目標は、itemId と現在利用可能なアイテムの数量を含むテーブルを返す sql ステートメントを作成することです。いくつかの方法を試しましたが、適切な解決策が見つかりませんでした。(私はSQLで非常に新しいです)。これは私が試したものの1つです: itemIdquantity

SELECT itemId, quantity - (SELECT SUM(quantity) FROM orderdetails GROUP BY itemId)
FROM items, orderdetails 
WHERE orderdetails.itemid = items.itemid;

前もって感謝します!

4

2 に答える 2

2

相関クエリを使用できると思います(通常、IIRCは避ける必要があります):

select 
   items.itemid, 
   items.quantity - 
       (select sum(quantity) 
          from orderdetails 
          where orderdetails.itemid = items.itemid group by itemid) left
from items;

または、2 つのテーブルを結合できます。

select items.itemid, quantity - total.q left from
items, 
  (select itemid, sum(quantity) q from
   orderdetails
   group by itemid) total
where items.itemid = total.itemid (+);
于 2013-04-26T12:38:17.923 に答える
1

次のようなテーブル データを指定する必要があります。

select items.itemId, items.quantity - sum(quantity)
from items, orderdetails 
where orderdetails.itemid = items.itemid
group by items.itemId, items.quantity
于 2013-04-26T12:17:04.703 に答える