我在java中编写一个简单的应用程序,我被困在一个sql语句中。假设我有两个名为items
的表,其中属性itemId
和quantity
以及orderDetails
也包含属性itemId
和quantity
。在表格中,我保留了所有项目,并且在订单表格中,我保留了一个itemId和数量,这些都是雇佣给客户的。目标是编写一个sql语句,该语句返回带有itemId的表和当前可用的项数。我尝试了几种方法,但我找不到合适的解决方案。 (我在sql中非常新)。这是我尝试过的其中一个:
SELECT itemId, quantity - (SELECT SUM(quantity) FROM orderdetails GROUP BY itemId)
FROM items, orderdetails
WHERE orderdetails.itemid = items.itemid;
提前致谢!
答案 0 :(得分:2)
我认为您可以使用相关查询(通常应避免使用IIRC):
select
items.itemid,
items.quantity -
(select sum(quantity)
from orderdetails
where orderdetails.itemid = items.itemid group by itemid) left
from items;
或者您可以加入两个表:
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 (+);
答案 1 :(得分:1)
您必须提供一些表格数据,例如:
select items.itemId, items.quantity - sum(quantity)
from items, orderdetails
where orderdetails.itemid = items.itemid
group by items.itemId, items.quantity