-2

可能重复:
如何从两个表中获取总和?

我有三个表第一个“products第二个” items“第三个” sales
第一个和第二个表有相同的列(' code',' quantity')但是第三个表有(' code',' name')现在我想要第一和第二个的总和数量但也想从第三个表中获取代码相同的名称。检查我的代码

Select code, sum(qtd),name
from (           select a.code, a.qtd from product a
       union all select b.code, b.qtd from items   b
       union all select c.name        from sales   c where b.code=c.code
     )
group by code

前两个给了我完美的价值观,但第三个小说给出了错误,也没有显示名字。

4

3 回答 3

0

使用时UNION请确保要组合的列与每个SELECT语句匹配。前两个SELECT语句工作正常,因为它们具有相同的列数。第三个失败了,因为它只有一列。


以下是使用 UNION组合两个(或多个)查询的结果集的基本规则:

  • 在所有查询中,列的数量和顺序必须相同。
  • 数据类型必须兼容。

根据您的查询,我认为您想要这样,

SELECT  a.code, b.name, SUM(a.qtd) totalSUM
FROM    product a
            INNER JOIN sales b
                ON a.code = b.code
GROUP BY a.code, b.name
UNION
SELECT  a.code, b.name, SUM(a.qtd) totalSUM
FROM    items a
            INNER JOIN sales b
                ON a.code = b.code
GROUP BY a.code, b.name
于 2012-08-30T00:57:55.553 回答
0

哼....

SELECT
  sales.name,
  (SELECT SUM(products.quantity) FROM products WHERE products.code = sales.code) as products.quantity,
  (SELECT SUM(items.quantity) FROM items WHERE items.code = sales.code) as items_quantity,
FROM sales
于 2012-08-30T00:58:10.237 回答
0

我认为您想做这样的事情,尽管目前尚不清楚实际要求是什么:

select code = t1.code ,
       name = t2.name ,
       qtd  = t1.qtd 
from ( select code =      t.code   ,
              qtd  = sum( t.qtd  )
       from (           select a.code, a.qtd from product a
              union all select b.code, b.qtd from items   b
            ) t
       group by t.code
     ) t1
join sales t2 where t2.code = t1.code

干杯!

于 2012-08-30T01:09:40.767 回答