在mysql

时间:2017-01-10 09:17:47

标签: mysql

表: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

对不起改变问题。

3 个答案:

答案 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