Lupus: Sortierung bei GROUP BY

Hallo,

ich bastle nun schon länger an einer MySQL-Abfrage mit einem GROUP BY Befehl rum, komme aber auf keine Lösung. Vereinfacht habe ich folgende Tabellen:

band:
- id
- name

album:
- id
- band_id
- name
- production_date

song:
- id
- band_id
- album_id
- name
- charts (Wert für Charts)

album_has_song:
- song_id
- album_id
- order (für Sortierung der Songs)

Um die Songs auszulesen, verwenden ich den folgenden Query:

SELECT  
	*  
FROM  
	band as b LEFT JOIN album as a ON b.`id` = a.`band_id` LEFT JOIN  
	album_has_song as ahs ON ahs.`album_id` = a.`id` LEFT JOIN  
	song as s ON ahs.`song_id` = s.`id`  
WHERE  
	-- weitere Bedingungen  
ORDER BY  
	b.`name` ASC,  
	a.`production_date` DESC,  
	ahs.`order` ASC  
LIMIT  
	25

Die Abfrage soll nun aber nur die Top 25 der «Charts» selektieren (je höher der s.charts Wert ist, umso besser das Ranking), wobei pro Album aber immer nur ein Song in den Charts sein darf. Ich habe es schon mit «GROUP BY a.id» versucht, aber ich komme dann nicht weiter, weil ich es dann nicht schaffe, vom gruppierten Album den Song mit dem höchsten s.charts-Wert zu bekommen, anstatt den Ersten der gefunden wird. «MAX(s.charts)» hilft mir insofern nicht weiter, weil ich dann ja nur den höchsten Charts-Wert bekomme, aber nicht die dazu passenden Spalten wie z.B. Song-Name.

Weiss jemand, wie ich das realisieren kann? Benötige ich evt. einen Subquery?

Vielen Dank für Hilfe,
Lupus