具有GROUP BY和WHERE子句的MySQL SUM

时间:2019-04-04 14:33:06

标签: php mysql group-by

我有三个表,并添加了联接以引用where子句并限制结果。

没有where子句,SUM和GROUP BY在所有表条目上都可以正常工作。但是,如果我尝试将结果限制为tool.id,则无法正常工作。

订单

ID | tool_id  | 
1  |    1     | 
2  |    1     |  
3  |    1     |
4  |    2     |      

postitions_list

ID | order_id | optionindex | 
1  |    1     |  1          |  
2  |    1     |  2          |  
3  |    1     |  1          |  
4  |    2     |  4          |               

工具

ID | Number   |
1  |   10     | 
2  |   20     |  
3  |   30     |        

查询

SELECT
orders.id,
orders.tool_id,
positions_list.order_id,
positions_list.optionindex,
tools.id,
tools.tool_number,
SUM(positions_list.optionindex) AS optionindex

FROM positions_list

LEFT JOIN orders
ON orders.id=positions_list.order_id

LEFT JOIN tools  
ON  tools.id=orders.tool_id

WHERE
tools.id = :id 

GROUP BY positions_list.optionindex

我需要的是

基于给定tool.id的查询结果

ID | tool_id | optionindex | optionindex 
1  |  1      | 1           |  2
2  |  1      | 2           |  1
3  |  1      | 3           |  0   
4  |  1      | 4           |  0   

此外,下一步将是获取optionindex.content

选项索引

ID | content  | 
1  |  Value1  | 
2  |  Value2  |  
3  |  Value3  |  
4  |  Value4  |    

所以我最终需要的查询结果是:

基于给定tool.id的查询结果

ID | tool_id | optionindex | optionindex | optionindex.content
1  |  1      | 1           |  2          | Value1
2  |  1      | 2           |  1          | Value2
3  |  1      | 3           |  0          | Value3
4  |  1      | 4           |  0          | Value4

0 个答案:

没有答案