MySQL查询来自三个不同的表

时间:2012-09-01 17:57:27

标签: mysql sql

我构建了工作MySQL查询:

  SELECT 
    v.*, u.username 
  FROM 
    video AS v, users AS u
  WHERE
    v.type = 'public' 
  AND 
    v.user_ID = u.user_ID

现在,我想在表count()中添加第三个表和comments个结果,其中此表中的video_ID将等于表video中的 SELECT v.*, u.username, count(c.video_ID) FROM video AS v, users AS u, comments AS c WHERE v.type = 'public' AND v.user_ID = u.user_ID AND v.video_ID = c.video_ID 。< / p>

我尝试了这个但是没有成功:

video_ID

作为回报,我想获得与某些{{1}}相关的评论数量。

我不明白如何在一个查询中使其正常工作。

你能帮帮我吗?

提前谢谢你,
髂骨

1 个答案:

答案 0 :(得分:7)

如果在查询中使用类似COUNT的聚合函数,则需要使用GROUP BY子句指定分组。

试试这个

SELECT  
    v.*, 
    u.username, 
    count(c.video_ID) AS comment_count
FROM  
video AS v
     INNER JOIN users AS u ON     v.user_ID = u.user_ID 
     INNER JOIN comments AS c ON    v.video_ID = c.video_ID
WHERE 
 v.type = 'public'  
GROUP BY
    v.id, 
    u.username,
    v.v.add_time
ORDER BY
    v.add_time

虽然MySQL允许您省略GROUP BY子句的某些元素,但最好指定它们。

加入两个表时,最好使用INNER JOIN语法,而不是WHERE过滤器。