2013-12-13 82 views
0

我有这个表:添加三个子查询的结果

id item_name_1 quantity 1 item_name_2 quantity_2 item_name_3 quantity_3 
----------------------------------------------------------------------------------- 
1 Apple   2   Pear   3   Orange  5 
2 Pear   1   Apple   4 
3 Orange  6 
4 Apple   1   Pear   2   Orange  3 

我想这样的结果:

item  total 
-------------- 
Apple 7 
Pear  6 
Orange 14 

我尝试这样做:

SELECT 

(SELECT item_name_1, SUM(quantity_1) AS count FROM table1 
GROUP BY item_name_1) AS item, 

(SELECT item_name_2, SUM(quantity_2) AS count FROM table1 
GROUP BY item_name_2) AS item, 

(SELECT item_name_3, SUM(quantity_3) AS count FROM table1 
GROUP BY item_name_3) AS item, 

SUM(count) AS total 
FROM table1 
GROUP BY item; 

错误代码:1241的操作对象含有1列(多个)

不限sugges蒸发散?

+3

对于初学者来说,你的数据库是没有正确归。这是你的数据库,还是别人的? –

+0

这是我的数据库。我将努力使其正常化。谢谢你的建议。 – Vincevna

回答

0

当您只有一列时,您在子查询中选择了两列。

像这样的事情会得到你在找什么:

SELECT item_name, SUM(quantity) AS quantity 
FROM 
(SELECT item_name_1 AS item_name, SUM(quantity_1) AS quantity 
FROM table1 
GROUP BY item_name_1 

UNION ALL 

SELECT item_name_2 AS item_name, SUM(quantity_2) AS quantity 
FROM table1 
GROUP BY item_name_2 

UNION ALL 

SELECT item_name_3 AS item_name, SUM(quantity_3) AS quantity 
FROM table1 
GROUP BY item_name_3) AS ABB1 
GROUP BY item_name; 
+0

超人!谢谢! – Vincevna

0

我会尝试像这样。

select t.item_name_1, s1+s2+s3 

from 
(
select * From 
( 
select sum(quantity_1) as s1, item_name_1 
from 
table1 
group by item_name_1 
) t1 

full outer join 

( 
select sum(quantity_2) as s2, item_name_2 
from 
table1 
group by item_name_2 
) t2 on t1.item_name_1 = t2.item_name_2 

full outer join 

( 
select sum(quantity_3) as s3, item_name_3 
from 
table1 
group by item_name_3 
) t3 on t2.item_name_2 = t3.item_name_3 

) t