表:O
ID Date
1 2016-01-10
2 2016-01-10
3 2016-01-11
表:OD
ODI ID Quantity
1 1 1
2 1 2
3 2 1
4 3 1
表:OH
OHI ID
1 1
2 2
3 1
4 3
我有三张桌子O,OD,OH。我需要加入这三张表并获得每天的数量总和 试过
SELECT O.date,SUM(od.Quantity),group_concat(OHI) FROM O
INNER JOIN OD ON OD.ID = O.ID
INNER JOIN OH ON OH.ID = O.ID
GROUP BY O.date;
但是由于加入OH表,所得到的数量总和是不同的。现在我如何获得正确的总和。
预期结果:
Date SUM(od.Quantity)
2016-01-10 4
2016-01-10 1
对不起改变问题。
答案 0 :(得分:0)
您不需要join
OH表,可以通过以下查询完成:
SELECT O.ID,SUM(od.Quantity) FROM O
INNER JOIN OD ON OD.ID = O.ID
GROUP BY O.ID;
答案 1 :(得分:0)
您无需加入OH表。
select O.ID, SUM(OD.Quantity) total_qty
from O inner join OD
on O.ID = OD.ID
group by O.ID;
如果您需要加入OH,请在汇总后进行。
select *
from OH inner join (
select O.ID, SUM(OD.Quantity) total_qty
from O inner join OD
on O.ID = OD.ID
group by O.ID
) t on t.ID = OH.ID;
答案 2 :(得分:0)
在子查询中首先聚合OD
表,然后将其连接到其他两个表:
SELECT t1.Date,
t2.Quantity,
t3.OHI -- and possibly other columns from OH
FROM O t1
INNER JOIN
(
SELECT ID, SUM(Quantity) AS Quantity
FROM OD
GROUP BY ID
) t2
ON t1.ID = t2.ID
INNER JOIN OH t3
ON t1.ID = t3.ID