2012-02-17 115 views
0

我需要查询帮助。我有一个“成员”表和一个“评论”表。MySQL组合数据+计数(*)查询来自2个表

members: userid,name,bday etc... 
comments: id,userid,message,rel etc... 

直到现在我使用了2个查询membersdata和commentsCount,并在PHP中结合使用。

我的问题。只有一个查询可以同时获得两个(全部来自成员& &评论数)吗?

这不是workung ...

SELECT members.*, count(comments.*) as count 
FROM members, comments 
WHERE members.userid=comments.userid 
group by members.userid 

是否有人知道的其他解决方案?

+0

为什么不工作?语法错误?或者它返回什么? – 2012-02-17 00:46:21

回答

2

这是你查询的清理后的版本,假设你要为每个useridnumber of comments

SELECT members.userid, count(*) as count 
FROM members 
INNER JOIN comments 
ON members.userid = comments.userid 
GROUP BY members.userid 

我解决的问题:

  1. 只选定列是无论是在group by子句,或者具有应用于它们的聚合函数。这是不正确的选择不符合任何这些标准(虽然MySQL允许你这样做)
  2. 代替隐有明确加入连接列,并搬离where子句on条款
  3. 代之以select ... count(comments.*)加盟条件select ... count(*)count(*)工程就好了
+0

Inner Join ftw。 – 2012-02-17 00:59:46

0

谢谢你马特 我用你的版本。而im的学习是sql连接。

我的代码的问题是'count(comments。*)'。 Mysql不喜欢这个!

这是工作:

SELECT members.*, count(comments.rel) as count 
FROM members, comments 
WHERE members.userid=comments.userid 
group by members.userid