【发布时间】:2012-06-04 11:49:00
【问题描述】:
我有两张桌子
- 包装表:packageid、数量
- 交易表:transactionid、packageid、数量
每当获得“package”时,都会在“transactions”表中创建一个条目以及获得的数量。可以执行多次'transactions',并且当包裹完全获得时,该包裹的所有交易的总和应该等于包裹表中该包裹的数量。
我想写一个SQL语句来检查一个特定的packageid是否没有被完全获取到,即:
- 未执行任何事务
- 已执行交易,但所有交易的数量总和 交易少于包裹表中的数量
我怎样才能做到这一点?我尝试使用的每个加入都只为 2 号提供服务,但不考虑没有交易的包裹
我试过了:
select package.packageid, package.quantity, sum(transactions.quantity) from package join transactions on package.packageid = transactions.packageid where package.quantity > sum(transactions.quantity)
也尝试了左连接,但它不起作用。理想情况下,我希望结果中左侧表中列出的所有包在必要时右侧为空值
【问题讨论】:
-
select package.packageid, package.quantity, sum(transactions.quantity) from package join transactions on package.packageid = transactions.packageid where package.quantity > sum(transactions.quantity)也尝试了左连接,但它不起作用。理想情况下,我希望左表中列出的所有包都需要右表中的空值 -
@AbcdfpqVpn 把它放在问题中。