两个选择SQL语句的减法如何工作?

时间:2016-10-22 23:50:40

标签: sql oracle11g

我有两张桌子:购买和销售。 下面的查询给出了'pqty'和'sqty'之间的区别

有人可以解释以下查询的工作原理吗?存储在X,Y中的是什么? 请参阅链接以获取所选查询的输出。 Select queries for two tables

select X.totalpqty - Y.totalsqty

from 

(select sum(pqty) as totalpqty from purchase where wasteid = 2)X, 

(select sum(sqty) as totalsqty from sale where recyclerid = 102001)Y;

2 个答案:

答案 0 :(得分:1)

给定的查询动态创建2个表:

首先在飞行表X上:

select sum(pqty) as totalpqty from purchase where wasteid = 2

仅使用一个值创建table X:totalpqty,即具有wasteid=2的pqty的总和。

第二个飞行表Y:

select sum(sqty) as totalsqty from sale where recyclerid = 102001

创建只有一个值的table Y:totalsqty,即具有recyclerid=102001的sqty的总和。

这两个表(X和Y)没有连接,因为没有必要这样做,因为它们每个只返回一个值。笛卡尔积只是一行,有两列:

  • pqty的总和
  • sqty的总和

最后,主查询获取2个子查询返回的2个值,并执行所需的实际减法(X.totalpqty - Y.totalsqty)。

答案 1 :(得分:0)

X和y是两个子查询结果别名,它有两个列 totalpqty totalsqty