2009-08-27 52 views
0

我必須執行SQL查詢才能根據視圖數獲取前10個相冊。觀看次數實際上是指定相冊中每首歌曲的總觀看次數。有關SQL查詢的幫助

我的表是:

albums: 
- album_id 
- album_name 
- album_owner 

songs: 
- song_id 
- song_name 
- song_album 
- song_owner 
- song_views 

你們能幫助我這一個?

+0

你需要做的是在只有一個查詢? – mck89 2009-08-27 08:56:57

+0

是的,很不幸。 – Psyche 2009-08-27 08:57:33

回答

4
select sum(song_views) as 'song_sum',album_name 
from albums a 
inner join 
songs s 
on a.album_id = s.song_album 
group by album_name 
order by song_sum DESC 
limit 0,10; 

如果song_album線指相冊ID ...

+0

我認爲這就是它! 結果看起來不錯 謝謝! – Psyche 2009-08-27 09:04:56

3

試試這個:

SELECT TOP 10 a.album_id, a.album_name, a.album_owner, SUM(s.song_views) 
FROM albums a 
     INNER JOIN 
       songs s 
       ON a.album_id = s.song_album 
GROUP BY a.album_id, a.album_name, a.album_owner 
ORDER BY SUM(s.song_views) DESC 
+0

不錯 - 請原諒我的無知,但只是MSSQL特定的TOP子句? PostgreSQL/SQLite/MySQL中的等價物是什麼? – 2009-08-27 09:00:02

+0

@ meder use limit 10 ... for top 10 – 2009-08-27 09:01:36

+0

我收到一個錯誤,提示「無效的使用組功能」:( – Psyche 2009-08-27 09:02:39

2

喜歡的東西:

select top 10 song_album 
from songs 
group by song_album 
order by sum(song_views) desc 
0

我不能運行它,但它應該是沿

select album_name, sum(song_views) as views from albums join songs on songs.album_id = songs.song_album group by album_id order by views desc limit 10 
0

SELECT TOP 10 song_album詩經 GROUP BY song_album ORDER BY 總和(song_views)遞減