2012-03-26 56 views
1

我从我的MySQL数据库中选择用户的信息,如下图所示:内加入使用COUNT(*)

SELECT * FROM `Users` WHERE `$user_or_id` = ? 

不过,我想额外咬下信息添加到返回的数据。数据的额外位数是名为'Venues'的表中的记录总数,其中行'字段'user_id'与表'用户'中的'id'字段相同。

请你能告诉我哪里出了问题以下查询?以下是我收到的错误:

您的SQL语法错误;检查手册, 对应于您的MySQL服务器版本的正确语法使用 附近'*)FROM Users作为内部联接Venues AS v ON u.id = v.user_id WHERE u.id =''在第1行

SELECT u.*, v.count(*) FROM `Users` AS u INNER JOIN `Venues` AS v ON u.id = v.user_id WHERE u.$user_or_id = ? 
+1

可能'count(v。*)'(如果可能的话)。 – hakre 2012-03-26 19:20:01

+1

你必须使用GROUP BY语句 – MarcinJuraszek 2012-03-26 19:21:12

回答

2
SELECT u.*, COUNT(v.*) FROM `Users` AS u INNER JOIN `Venues` AS v ON u.id = v.user_id WHERE u.$user_or_id = ? 

COUNT是一个MySQL函数,而不是表v的成员。传递一个表示你想要计算的参数 - 在这种情况下,v的行。

1

应该COUNT(v.*)。否则它被解释为“表V内的函数计数”,这是无效的。

1

只需使用count(*),而不是v.count(*)