如何通过ID将GROUP的结果与JOIN进行分组

时间:2018-03-05 09:28:23

标签: mysql sql

我有两个表,一个包含我的联系人信息(contact),另一个包含用户互动(notitia)。

这是一个例子:

 SELECT n.contact_id, c.email, c.numero, c.code_postal, n.nbr_click, n.nbr_ouverture,
(
    n.nbr_click * 2
) 
+ 
(
    n.nbr_ouverture * 3
)
as total FROM notitia n LEFT JOIN contact c ON c.id = n.contact_id LIMIT 5

结果是:

enter image description here 现在我正在尝试nbr_clicknbr_ouverturetotal的和,如果contact_id是相同的,在我的例子中我们有{{1}的2倍因此结果应该是:

enter image description here

我尝试contact_id

GROUP BY n.contact_id

但是这里只有第一行的contact_id = 3

我也尝试过SUM:

SELECT n.contact_id, c.email, c.numero, c.code_postal, n.nbr_click, n.nbr_ouverture,
(
    n.nbr_click * 2
) 
+ 
(
    n.nbr_ouverture * 3
)
as total FROM notitia n LEFT JOIN contact c ON c.id = n.contact_id GROUP BY n.contact_id LIMIT 5

但是这里的所有内容都在行中添加了巨大的结果

1 个答案:

答案 0 :(得分:1)

你应该把你写的两个查询混合起来。您应该GROUP BY contact_id然后将SUM应用于您需要SUM的列。试试这个:

SELECT n.contact_id, 
       c.email, c.numero, c.code_postal, SUM(n.nbr_click), SUM(n.nbr_ouverture),
(
    SUM(n.nbr_click) * 2
) 
+ 
(
    SUM(n.nbr_ouverture) * 3
)
as total FROM notitia n 
   LEFT JOIN contact c ON c.id = n.contact_id 
   GROUP BY n.contact_id LIMIT 5