2013-03-15 160 views
1

我已經設置了一個比賽,其中發送了視頻提交內容,然後人們對它們進行投票。提交被髮送到一個表submissions這種結構:結合一張桌子的計數並且與另一張桌子不同

submission_id, title, videoname 

投票表votes結構爲:

video_id, voter_id 

的VIDEO_ID關聯到在提交表格的submission_id。

我想要得到的票數爲每個視頻,像這樣:

select video_id, count(1) from votes group by submission_id 

但我也想要顯示的標題爲每個視頻這樣的結果將是:

video_id, count, title 

我是一個sql noob所以請原諒我,如果這是一個簡單的聲明。我已經做了一些研究,並且無法自己想出一些東西,並希望得到任何幫助。

回答

2

我會推薦做一個LEFT JOIN而不是INNER JOIN ...和COUNT(v.video_id)而不是COUNT(*)。這樣,你仍然會返回意見,目前有0票:

select 
    s.submission_id as video_id, 
    count(v.video_id) as vote_count, 
    s.title 
from 
    submissions s 
    left join votes v on v.video_id = s.submission_id 
group by 
    s.submission_id, 
    s.title 
0
select s.submission_id, s.title, s.videoname, c.cnt 
from 
submissions s, 
(select video_id, count(1) as cnt from votes group by video_id) c 
where 
s.submission_id = c.video_id 
+0

你爲什麼要運行子查詢而不是聯接?我從來沒有見過這樣的查詢。 – 2013-03-15 18:31:12

0

這將會從您提交表中返回的每個視頻,並顯示投票數的投票表格。如果再也沒有出現過任何選票將在結果顯示了一個空的票數列

SELECT video_id, title, COUNT(voter_id) Votes 
FROM submissions s 
    LEFT OUTER JOIN votes v ON s.submission_id = v.video_id 
GROUP BY video_id, title, 
0

你必須做一個連接用於獲取選票,視頻標題,這樣的兩個表之間:

SELECT submissions.submission_id 
    , COUNT(1) 
    , submissions.videoname 
FROM submissions LEFT OUTER JOIN votes 
    ON votes.video_id = submissions.submission_id 
GROUP BY submissions.submission_id, submissions.videoname 
相關問題