我有一个应用程序允许用户投票并有两张桌子
视频
|id|uri_code|文件名|created_on|已删除|
投票
|id|video_id|ip|created_on|
我希望能够选择所有视频信息并获得每个视频的总票数,这可以通过 sql 语句实现,还是最好使用服务器端代码?
我有一个应用程序允许用户投票并有两张桌子
视频
|id|uri_code|文件名|created_on|已删除|
投票
|id|video_id|ip|created_on|
我希望能够选择所有视频信息并获得每个视频的总票数,这可以通过 sql 语句实现,还是最好使用服务器端代码?
使用 SQL 肯定是可能的——这种事情正是 SQL 擅长的!您想通过视频对所有选票进行“分组”,因此该GROUP BY
条款正是您所追求的:
SELECT Video.*, COUNT(*)
FROM Video JOIN Votes ON Votes.video_id = Video.id
GROUP BY Video.id;
select vi.*, count(vo.id) as votes
from video vi
inner join votes vo on vi.id = vo.video_id
group by vi.id
也许是这样的:
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
嗨,您可以在这里使用 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