使用JOIN关系和COUNT的MySQL查询出现问题

时间:2011-08-23 09:31:19

标签: mysql

我有一个表格,用于存储用户与项目的关系。这些项目可以使用reftecid进行分组,我需要获得用户关系 - 持续时间和简单查询。

这是我的表rel_user_proj

userid / projectid / role / duration (default NULL) / inactuserid (default NULL) / inactstamp (default NULL)

然后我正在尝试这个:

SELECT COUNT( * ) AS total, duration
FROM projects p
JOIN rel_user_proj rup ON p.projectid = rup.projectid
WHERE p.reftecid=26
AND rup.duration IS NOT NULL
GROUP BY duration
LIMIT 0 , 30

我最终需要的是一个列表:

  • 总数:1,持续时间:3
  • 总数:3,持续时间:12
  • 总数:2,持续时间:1

在我当前的查询中,我得到的是:

  • 总数:58,持续时间:1< - NOT VALID
  • 总计:1,持续时间:9< - VALID

唯一一个reftecid = 26的项目是2010202,如果我这样做的话:

SELECT * FROM `rel_user_proj` WHERE projectid=2010202

我得到一个具有正确持续时间的UNIQUE行userid = 49。我不明白其他58人在哪里。

有人能帮助我吗?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

试试这个:

SELECT COUNT( * ) AS total, duration
FROM projects p
JOIN rel_user_proj rup ON p.projectid = rup.projectid
WHERE p.reftecid=26
AND rup.duration IS NOT NULL
GROUP BY reftecid
LIMIT 0 , 30

我不完全确定持续时间如何在上面发挥作用,但如果你需要所有持续时间的总和,那么你可以做这样的事情:

SELECT COUNT( * ) AS total, sum(duration) AS total_duration
FROM projects p
JOIN rel_user_proj rup ON p.projectid = rup.projectid
WHERE p.reftecid=26
AND rup.duration IS NOT NULL
GROUP BY reftecid
LIMIT 0 , 30