2012-04-27 13 views
0

私はすべてを選択できるようにしたいと思い、ユーザーが二つのテーブルMySQLの投票計算

ビデオ

 
|id|uri_code|filename|created_on|deleted| 

投票

 
|id|video_id|ip|created_on| 

を投票して持つことができますアプリを持っていますビデオ情報を取得し、各ビデオの投票の総数を持っている、これはSQLステートメントで可能ですか、私はサーバー側のコードでそれをやることが最善でしょうか?

+0

ipは投票数です。 – Milee

答えて

2

それはSQLで確かに可能だ - この種のものは、SQLがで素晴らしいですまさにです!あなたは、ビデオによって、すべての票の数「グループ」にしたいので、GROUP BY句はあなたが後にしている正確に何である:

SELECT Video.*, COUNT(*) 
FROM Video JOIN Votes ON Votes.video_id = Video.id 
GROUP BY Video.id; 
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 
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 
0

あなたがする必要がある1.Ifこんにちはあなたがここに

をmysqlのクエリを使用することができます他の条件あなたが削除例えば、いくつかの条件付き動画の合計票を取得する必要があります2.Ifは、その後

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 

せずにビデオのための唯一の合計票を取得し、削除値の0と1以外の削除動画について値0と1を持っています列挙型のあなたは削除されていないビデオ投票を取得する必要があります詳細then

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