2014-10-09 87 views
0

我有一個帶有兩個表格的數據庫:歌曲,視頻。每首歌都有很多視頻。如何獲取每首歌曲中觀看次數最多的視頻?選擇每首歌曲觀看次數最多的視頻

song : id, songname 
video : id, song_id, url, views 

結果應該是[id(song), songname, url(for the most viewed video)

還有一個問題,我怎麼知道單個查詢中結果的數量?

+0

嘛,你嘗試過什麼? – OldProgrammer 2014-10-09 15:44:06

+0

如果這些答案之一是正確的/幫助你,請接受它/投票 – mmcrae 2014-10-09 16:15:24

回答

0
select song.id, 
     song.songname, 
     video.url 
from song, 
     video 
where song.id = video.song_id 
and song.id = ? 
order by video.views desc 
limit 1 

我怎麼會知道結果,在一個單一的查詢號碼是多少?

因爲上面的查詢使用「限制」,即使有幾首歌的視圖數相同,它總是隻返回一首歌曲。所以你總是在這個查詢中得到一個結果。

+0

我不是要求頂級歌曲,我需要觀看最多的視頻以及每首歌曲 – Rawhi 2014-10-09 15:51:58

0

這應該工作。只是不確定是否需要別名子查詢。但基本上是這樣:

SELECT 
    song.id, song.songname, video.url 
FROM song 
    JOIN video 
     on song.id = video.song_id 
WHERE video.views IN 
(SELECT 
    max(views) 
FROM 
    video 
GROUP BY song_id) 

如果你有一噸的爲每首歌曲的視頻,該查詢可能需要一段時間了。

0

這樣的事情可以做的伎倆:

SELECT song.id, songname, url 
FROM video 
INNER JOIN song 
ON song.id = song_id 
WHERE views = (SELECT MAX(views) FROM video AS v WHERE v.song_id = video.song_id) 
GROUP BY song_id, songname, url