Mysql 左联接列上的分组依据

Mysql 左联接列上的分组依据,mysql,Mysql,这是我的查询,它确实按postid对它们进行分组,但不会按项目id或pid进行分组 我不确定该从这里走到哪里,我认为这与试图通过从另一个联接连接的列进行分组有关。只是想了解一些情况。我相信您遇到的问题是,它是一个左连接,可能会遇到空值。所以,每当你有空值,你总是可以得到奇怪的副作用。。。我会改成 SELECT tracker.postid as postid, sum(tracker.clicks) as clicks, projects.id as pid FROM `tracker_dail

这是我的查询,它确实按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 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
选择。。。 合并projects.id,0作为pid


由于您已经将pid列别名用作分组依据,因此不会产生任何影响。

请尝试以下分组依据postid,projects.id这是我最初编写查询的方式,但它不起作用。请同时发布您的表结构您是否在tracker表中发布了帖子?即使我只是简单地将查询添加到类似以下内容:SELECT tracker.postid as postid,sum tracker.clicks as clicks,posts.project\u id FROM tracker\u dailyclicks tracker LEFT JOIN posts.id=post-id其中tracker.date>='2012-03-30'和tracker.date我想我的问题是在对post-id进行分组后,它不会按项目id对行进行分组,因为post-id不同。这有意义吗?在我按post-id对它们进行分组之后,如何按项目id对它们进行分组?我只是解决了我自己的问题,它不需要按post-id进行分组,因为它们与项目id相关,所以我只需要按项目id进行分组。
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