2012-06-06 221 views
2

简单地说,但我找不到语法甚至是一个例子甚至关闭!假设下表:MySQL:sum()和来自多个表的连接

Table:'Red' 
Fields: id | sm | md | lg 
Data: 1 | 3 | 5 | 7 
     2 | 9 | 8 | 7 
     3 | 2 | 4 | 6 

Table:'White' 
Fields: id | sm | md | lg 
Data: 1 | 0 | 0 | 0 
     2 | 0 | 0 | 0 
     3 | 0 | 0 | 0 

Table:'Blue' 
Fields: id | sm | md | lg 
Data: 1 | 1 | 1 | 1 
     2 | 1 | 1 | 1 
     3 | 1 | 1 | 1 

所有我想要的是总的一切行动,但保留列如下表所示:

Table:'Total' 
Fields: id | sm | md | lg 
Data: 1 | 4 | 6 | 8 
     2 | 10 | 9 | 8 
     3 | 3 | 5 | 7 

然后创建一个PHP while循环回显的结果。事情是这样的:

<?php 

while($row = mysql_fetch_array($get_totals)) 
{ 
echo <td>".$row[sm]."</td><td>".$row[md]."</td><td>".$row[lg]."</td>"; 
} 

?> 

我不知道这一点。任何帮助?我只需要一个可以在这里工作的php select语句。

回答

2

未经测试,但应该工作:

SELECT id, SUM(sm) as sm, SUM(md) as md, SUM(lg) as lg FROM (
    SELECT * FROM Red 
    UNION ALL 
    SELECT * FROM White 
    UNION ALL 
    SELECT * FROM Blue 
) AS somealias 
GROUP BY id 
+0

奇....我得到一个错误:每个派生的表必须有它自己的别名 – user1261388

+0

你得到什么错误? – WojtekT

+0

忘记了结果alis ...迄今如此好! – user1261388