我有两张桌子。
一个是inventorytable
,列PO No,index,item name,amount,date
,
PO Index Item amount date unit price
PO01 1 pen 20 1/2/2018 10
PO01 2 pad 15 1/3/2018 10
PO02 1 book 30 2/5/2018 10
另一个表格为paymentrecord
PO No,index,item name, amount, value
。
PO Index Item amount
PO01 1 pen 10
PO01 2 pad 15
如何查找未付款或未全额付款的广告资源?
PO Index Item amount unpaid value
PO01 1 pen 10 100
PO02 1 book 30 3000
我试过跟随sql
select *
from inventory
where not exists (select inventory.PONo,inventory.index
from inventory,payment
where inventory.PO=payment.PO )
但它什么都不返回
答案 0 :(得分:1)
使用外部联接将付款链接到广告资源。过滤export default muiThemeable()(ComponentName);
小于库存项目的计算值payment.amount
:
unit_price * amount
注意:所有示例中的内容名称都不一致。因此,您可能需要调整此解决方案以使其在您的架构上运行。
答案 1 :(得分:0)
我猜你需要PO和Index两者来唯一地识别记录。 试试下面。
select * from inventory
where not exists
(select 1 from inventory,payment where inventory.PO=payment.PO and inventory.Index=payment.Index)
答案 2 :(得分:0)
您可以使用以下查询
select i.ipo, i.iindex, i.iitem,
(i.iamount - coalesce(p.pamount,0)) as Tamount
from payment p right outer join invent i
on (i.ipo = p.ppo and i.iindex = p.pindex and i.iitem = p.pitem)
where i.iamount != coalesce(p.pamount,0)
这是
的结果ipo iindex iitem Tamount
PO01 1 pen 10
PO02 1 book 30
后面的表结构是
create table invent
(
iPO varchar(4),
iIndex int,
iItem varchar(10),
iamount int,
idate date,
iunit_price int);
create table payment
(
pPO varchar(4),
pIndex int,
pItem varchar(10),
pamount int);
答案 3 :(得分:-1)
希望以下查询有帮助。使用相同的列名而不是*。
select * from inventory
Except
select * from payment