我有三张桌子“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
前两个给了我完美的价值,但第三个小说给出了错误而不显示名字。
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分: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
干杯!