在其他mySql表中选择数据和COUNT个注释

时间:2011-03-15 17:25:26

标签: mysql

您好,感谢您对此进行调查。

此刻我有以下查询:

SELECT videos.video_genre_id, videos.username, videos.title, videos.slugTitle, videos.link, videos.tags, videos.date_added, video_genre.video_genre_id, video_genre.video_genre

FROM videos, video_genre
WHERE videos.accepted = 'y'
AND videos.video_genre_id = video_genre.video_genre_id
ORDER BY  videos.date_added DESC

工作正常。但我想计算每个视频的总评论数。我有另一个名为“video_comments”的表,其中包含以下字段:

video_comments_id 
videos_id 
comment

使用一个查询并获取每个视频的总评论的最佳解决方案是什么?我以前从不使用COUNT,所以我不知道从哪里开始。

提前致谢。

编辑:

“视频”表格中包含“videos_id”字段作为主要字段。

编辑2:

我想我得到了答案:

    SELECT (select count(*) from video_comments AS total), videos.video_genre_id, videos.username, videos.title, videos.slugTitle, videos.link, videos.tags, videos.date_added, video_genre.video_genre_id, video_genre.video_genre
FROM videos, video_genre
WHERE videos.accepted = 'y'
AND videos.video_genre_id = video_genre.video_genre_id
ORDER BY  videos.date_added DESC

唯一的问题是我似乎无法将“总数”作为一行来显示总评论。

2 个答案:

答案 0 :(得分:1)

这样的东西

SELECT videos.video_genre_id, videos.username, videos.title, videos.slugTitle, videos.link, videos.tags, videos.date_added, video_genre.video_genre_id, video_genre.video_genre, COUNT(video_comments.videos_id) FROM videos INNER JOIN video_genre ON videos.video_genre_id = video_genre.video_genre_id LEFT JOIN video_comments ON video.id = video_comments.videos_id WHERE videos.accepted = 'y' GROUP BY videos.video_genre_id, videos.username, videos.title, videos.slugTitle, videos.link, videos.tags, videos.date_added, video_genre.video_genre_id, video_genre.video_genre ORDER BY videos.date_added DESC

我没有测试过,但这就是想法!

答案 1 :(得分:1)

SELECT videos.video_genre_id
     , videos.username
     , videos.title
     , videos.slugTitle
     , videos.link
     , videos.tags
     , videos.date_added
     , video_genre.video_genre_id
     , video_genre.video_genre
     , COUNT(video_comments.video_comments_id) AS totalcomments
    FROM videos
        JOIN video_genre
            ON videos.video_genre_id = video_genre.video_genre_id
        JOIN video_comments
            ON video_comments.videos_id = videos.videos_id
    WHERE videos.accepted = 'y'
    GROUP BY videos.videos_id
           , video_genre.video_genre_id
    ORDER BY videos.date_added DESC
;

如果您希望没有评论的视频也显示(总评价为0),请将JOIN video_comments更改为LEFT JOIN video_comments