2015-09-29 154 views
0
select qi.qtyonhand + qd.delqty as teste, 
     qi.itemname 
    from qitem qi, qdel qd 
where qi.itemname = qd.itemname 
    and qd.deptname = 'recreation'; 


select qi.qtyonhand - qs.saleqty as teste, 
     qi.itemname 
    from qsale qs, qitem qi 
where qi.itemname = qs.itemname 
    and qs.deptname = 'recreation'; 

我试图从qdel表的数量增加,并从qsale表的数量减去更新qitem数量计数。我试图把它全部放到一列中,但qdel表中的项目可能没有"recreation"部门名称,所以当我尝试将select语句合并为一个时,它将从qitems中删除一些项目。的Oracle SQL - 联合两个SELECT语句

+0

我看不出有任何更新在那里,所以我真的不知道你的”重新尝试去做。在我看来,你可能希望做一个外连接。顺便说一句,为什么一切都以'q'开头? – vesan

+0

就像第一个select语句有8行输出一样,同时第二个select语句只有4行,两个语句中只有2行。含义我想要合并的行但没有重复的行具有相同的项目名称。 – zapwreckage

回答

1

这是怎么回事?如果这不能提供理想的结果,您是否可以显示一些样本数据以更好地解释您需要的内容?

select qi.qtyonhand + NVL(qd.delqty,0) + NVL(qa.saleqty,0) as teste, qi.itemname 
from qitem qi 
left outer join (select * from qdel where deptname = 'recreation') qd 
    on qi.itemname = qd.itemname 
left outer join (select * from qsale where deptname = 'recreation') qs 
    on qi.itemname = qs.itemname 
where (qd.delqty is not null or qs.saleqty is not null) 

(有可能是做一个简单的方法,特别是如果qitem也有deptname列。)