0

我有一个应用程序允许用户投票并有两张桌子

视频

|id|uri_code|文件名|created_on|已删除|

投票

|id|video_id|ip|created_on|

我希望能够选择所有视频信息并获得每个视频的总票数,这可以通过 sql 语句实现,还是最好使用服务器端代码?

4

4 回答 4

2

使用 SQL 肯定是可能的——这种事情正是 SQL 擅长的!您想通过视频对所有选票进行“分组”,因此该GROUP BY条款正是您所追求的:

SELECT Video.*, COUNT(*)
FROM Video JOIN Votes ON Votes.video_id = Video.id
GROUP BY Video.id;
于 2012-04-27T09:56:41.210 回答
0
select vi.*, count(vo.id) as votes
from video vi
inner join votes vo on vi.id = vo.video_id
group by vi.id
于 2012-04-27T09:56:34.567 回答
0

也许是这样的:

SELECT
    Video.id,
    Video.uri_code,
    Video.filename,
    Video.created_on,
    Video.deleted,
    (
        SELECT
            COUNT(*)
        FROM
            Votes
        WHERE
            Votes.video_id=Video.id
    ) AS Total
FROM
    Video
于 2012-04-27T09:56:35.470 回答
0

嗨,您可以在这里使用 mysql 查询

1.如果您只需要获得视频的总票数而没有任何其他条件,那么

SELECT count( Votes.id ) AS total_vote, Video. *
FROM Video
LEFT JOIN Votes ON Video.id = Votes.video_id
WHERE Video.deleted = '1'
GROUP BY Video.id

2.如果您必须获得具有某些条件的视频的总票数,例如已删除有 0 和 1 值,未删除视频为 0,枚举类型的已删除值为 1,您必须获得未删除视频投票详细信息

SELECT count( Votes.id ) AS total_vote, Video. *
FROM Video
LEFT JOIN Votes ON Video.id = Votes.video_id
WHERE Video.deleted = '0'
GROUP BY video.id
于 2012-04-27T10:17:19.263 回答