我有三个表,并添加了联接以引用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