Oracle SQL - 组合两个select语句

时间:2015-09-29 22:40:36

标签: sql oracle query-optimization

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';

我尝试通过添加qitem表格的数量并从qdel表格的数量中减去来更新qsale数量计数。我试图将它全部放在一列中,但是qdel表中可能没有部门名称为"recreation"的项目,所以当我尝试将select语句放入一个时,它遗漏了qitems中的一些项目。

1 个答案:

答案 0 :(得分: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列。)

相关问题