在左连接列上分组

时间:2012-03-31 01:11:39

标签: mysql

以下是我的查询,它按postid对其进行分组,但不会按项目ID或pid

进行分组
SELECT 
      tracker.postid as postid, 
      sum(tracker.clicks) as clicks, 
      projects.id as pid
   FROM 
      tracker_dailyclicks tracker 
         LEFT JOIN posts 
            ON tracker.postid = posts.id 
            LEFT JOIN projects 
               ON projects.id = posts.project_id
   WHERE 
          tracker.date >= '2012-03-30' 
      AND tracker.date <= '2012-03-30' 
   GROUP BY 
      postid, 
      pid 
   ORDER BY 
      clicks DESC

我不确定从哪里开始,我认为它与尝试按照从另一个连接加入的列进行分组有关。只是寻找一些见解。

2 个答案:

答案 0 :(得分:0)

SELECT tracker.postid as postid, sum(tracker.clicks) as clicks, projects.id as pid
FROM `tracker_dailyclicks` tracker 
LEFT JOIN posts ON posts.id = postid
LEFT JOIN projects ON projects.id = posts.project_id
WHERE tracker.date >= '2012-03-30' AND tracker.date <= '2012-03-30' 
GROUP BY tracker.postid, projects.id ORDER BY clicks DESC

答案 1 :(得分:0)

我相信你遇到的问题是它是一个LEFT JOIN并且可能达到了NULL值。所以,每当你有NULL值时,你总会得到奇怪的副作用......我会改为......

选择......       COALESCE(projects.id,0)为pid

由于您已经使用“pid”列别名作为分组依据,因此应该没有影响。