我必须执行SQL查询才能根据视图数获取前10个相册。观看次数实际上是指定相册中每首歌曲的总观看次数。有关SQL查询的帮助
我的表是:
albums:
- album_id
- album_name
- album_owner
songs:
- song_id
- song_name
- song_album
- song_owner
- song_views
你们能帮助我这一个?
我必须执行SQL查询才能根据视图数获取前10个相册。观看次数实际上是指定相册中每首歌曲的总观看次数。有关SQL查询的帮助
我的表是:
albums:
- album_id
- album_name
- album_owner
songs:
- song_id
- song_name
- song_album
- song_owner
- song_views
你们能帮助我这一个?
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 ...
我认为这就是它! 结果看起来不错 谢谢! – Psyche 2009-08-27 09:04:56
试试这个:
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
不错 - 请原谅我的无知,但只是MSSQL特定的TOP子句? PostgreSQL/SQLite/MySQL中的等价物是什么? – 2009-08-27 09:00:02
@ meder use limit 10 ... for top 10 – 2009-08-27 09:01:36
我收到一个错误,提示“无效的使用组功能”:( – Psyche 2009-08-27 09:02:39
喜欢的东西:
select top 10 song_album
from songs
group by song_album
order by sum(song_views) desc
我不能运行它,但它应该是沿
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
SELECT TOP 10 song_album诗经 GROUP BY song_album ORDER BY 总和(song_views)递减
你需要做的是在只有一个查询? – mck89 2009-08-27 08:56:57
是的,很不幸。 – Psyche 2009-08-27 08:57:33