我遇到加入mysql的问题。
我在mysql上有3个表:
item_extend:
list_id item_id in_id out_id quantity
1 3 1 NULL 10
2 4 1 NULL 30
3 3 2 NULL 90
4 4 2 NULL 70
Additional_extend:
id add_id in_id out_id item_id quantity
1 2 1 NULL 3 20
2 2 2 NULL 3 80
progress_in:
in_id dates progress_id
1 2014-01-13 11:36:05 1
2 2014-01-17 10:14:13 1
我使用了这段代码:
SELECT DISTINCT a.list_id, a.item_id, a.quantity AS x, b.add, b.quantity AS y
FROM item_extend a
JOIN additional_extend b ON a.item_id = b.item_id
JOIN progress_in d ON d.in_id = a.in_id
WHERE d.progress_id = "1"
LIMIT 0 , 30
结果是:
1 3 10 2 20
1 3 10 2 80
3 3 90 2 20
3 3 90 2 80
但预期结果应为:
1 3 10 2 20
3 3 90 2 80
任何人都知道如何解决它?
答案 0 :(得分:0)
quantity
表中的一个item_id
有多个additional_extend
值,这就是您在输出中获得多行的原因。由于有多个quantity
值,您必须为每个quantity
汇总additional_extend
表的items_id
列,如下所示:
SELECT a.list_id, a.item_id, a.quantity AS x, b.add_id, SUM(b.quantity) AS y
FROM item_extend a
JOIN additional_extend b ON a.item_id = b.item_id
JOIN progress_in d ON d.in_id = a.in_id
WHERE d.progress_id = 1
GROUP BY a.list_id, a.item_id, x, b.add_id
答案 1 :(得分:0)
您应该使用GROUP BY,因为您的原始查询会多次显示相同的ID