mysql考虑两个表的行总和

时间:2013-05-01 06:25:54

标签: mysql sql

任何人都可以告诉我如何获得租赁表中每个工具的总和与工具主表中可用的工具相对应

租借

 _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
|tool_no| a1 | a2 | a3 | a4 |
|-------|----|----|----|----|
|  121  | 52 | 89 | 56 | 16 |
|-------|----|----|----|----|
|  142  | 45 | 94 | 89 | 12 |
|-------|----|----|----|----|
|  142  | 24 | 56 | 12 | 89 |
|-------|----|----|----|----|
|  156  | 96 | 89 | 14 | 16 |
|-------|----|----|----|----|

ToolMaster

 _ _ _ _ 
|tool_no|
|-------|
|  121  |
|-------|
|  142  |
|-------|
|  141  |
|-------|
|  150  | 
|-------|

我的查询在下面给出

select tool_no, SUM(a1+a2+a3+a4) AS rentalsum from Rental where tool_no IN(select tool_no from ToolMaster)

但我没有得到所需的结果

我的预期输出是这样的

 _ _ _ _ _ _ _ _ _ _ _
| tool_no | rentalsum |
|---------|-----------|
|   121   |    213    |
|---------|-----------|
|   142   |    421    |
|---------|-----------|

3 个答案:

答案 0 :(得分:1)

当前查询中唯一缺少的是GROUP BY子句。 See Here

但我宁愿在JOIN而不是IN

SELECT  a.Tool_No,
        SUM(b.a1 + b.a2 + b.a3 + b.a4) totalSum
FROM    ToolMaster a
        INNER JOIN Rental b
            ON a.Tool_No = b.Tool_No
GROUP   BY a.Tool_No

要进一步了解联接,请访问以下链接:

输出

╔═════════╦══════════╗
║ TOOL_NO ║ TOTALSUM ║
╠═════════╬══════════╣
║     121 ║      213 ║
║     142 ║      421 ║
╚═════════╩══════════╝

答案 1 :(得分:0)

select tool_no, SUM(a1)+SUM(a2)+SUM(a3)+SUM(a4) AS rentalsum 
from Rental 
Where tool_no in (select tool_no from ToolMaster)
Group By tool_no

使用加入

  select t.tool_no, SUM(a1)+SUM(a2)+SUM(a3)+SUM(a4) AS rentalsum 
    from Rental t
    Inner Join ToolMaster tm
       ON t.tool_no = tm.tool_no
    Group By t.tool_no

答案 2 :(得分:0)

使用以下查询:

SELECT r.tool_no, SUM(r.a1+r.a2+r.a3+r.a4) AS rentalsum 
FROM Rental r INNER JOIN ToolMaster tm 
ON r.tool_no = tm.tool_no
GROUP BY r.tool_no;

这将有魅力。