2014-03-05 100 views
-1

在MySQL中获取总计,我要查询两个表:MySQL查询:从两个非关联表

表1:

+------+-----------+-------+ 
| id | atual | user | 
+------+-----------+-------+ 
| 1 | 100  | 1 | 
| 2 | 150  | 1 | 
| 3 | 50  | 2 | 
+------+-----------+-------+ 

表2:

+------+------------+-------+ 
| id | budget | user | 
+------+------------+-------+ 
| 1 | 80  | 3 | 
| 2 | 150  | 1 | 
| 3 | 200  | 2 | 
+------+------------+-------+ 

我要抢用户1的总数。

两个表格不相关。不过,他们拥有共同的用户密钥。

这是我的尝试:

SELECT SUM(atual), SUM(budget) 
FROM table1, table2 
WHERE user=1 

这是产生错误:

#1630 - FUNCTION SUM does not exist. 

回答

1
SELECT SUM(atual), 
    (SELECT SUM(budget) FROM table2 WHERE user=1) 
FROM table1 
WHERE user=1 
+0

请注意:如果'table2'中的用户不在'table1'中,这将不起作用。 –

0
SELECT SUM(table1.atual) as Actual, SUM(table2.budget) as Budget 
FROM table1, table2 
WHERE table1.user=1 
+0

#1052 - 在where子句是不明确的列“用户” –

+0

对不起表都具有用户现场,所以你必须使用从您希望的表的名称用户被采取。 –

1

您需要join之前做了汇总:

select a.actual, b.budget 
from (select sum(actual) as actual from table1) a cross join 
    (select sum(budget) as budget from table2) b; 

编辑:

当你在一个问题中说“两个表格不相关”时,它肯定会显示你不关心用户列。我觉得你真的想这样:

select user, sum(actual) as actual, sum(budget) as budget 
from ((select user, sum(actual) as actual, NULL as budget 
     from table1 
     group by user 
    ) union all 
     (select user, NULL as actual, sum(budget) as budget 
     from table2 
     group by user 
    ) 
    ) ab 
group by user 
+0

谢谢,但我在哪里指定用户代码? –