我有一个应用程序,允许用户投票并有两个表
视频
|id|uri_code|filename|created_on|deleted|
投票
|id|video_id|ip|created_on|
我希望能够选择所有视频信息并获得每个视频的总投票数,这是否可以使用sql语句,或者我最好使用服务器端代码进行操作?
答案 0 :(得分:2)
使用SQL肯定是可能的 - 这种东西正是SQL擅长的!您希望按视频“分组”所有投票的计数,因此GROUP BY
子句正是您所追求的:
SELECT Video.*, COUNT(*)
FROM Video JOIN Votes ON Votes.video_id = Video.id
GROUP BY Video.id;
答案 1 :(得分: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
答案 2 :(得分: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
答案 3 :(得分: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表示已删除的枚举类型值,您必须获取未删除的视频投票详细信息然后< / p>
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