phpbar.de logo

Mailinglisten-Archive

[dbs] Mehrere Tables und die JOINs...

[dbs] Mehrere Tables und die JOINs...

Sebastian Mendel lists at sebastianmendel.de
Fre Sep 8 11:50:50 CEST 2006


Jens Reinemuth schrieb:
> Hallo Liste... 
> 
> ich steh echt grad auf dem Schlauch...
> 
> Ein Modul meiner HP scannt meine Musiksammlung durch und kopiert die ID-Tags 
> in Tables einer Datenbank...
> 
> Es gibt eine Table für
> - Title
> - Artist
> - Album
> 
> Title enthält albumid und artistid.

Ein Titel kann aber auf mehreren Alben sein ...
Ein Title kann ebenfalls von mehreren Künstlern sein ...

aber das nur am Rande


> Soweit so gut. Das Anzeigen einer (HTML-)Liste aller Titles ist einfach, nun 
> kommt aber die Liste der Alben.
> 
> Das Problem ist folgendes: Jeder Track hat ein Album, einen Artist... ABER ein 
> Album kann mehrere Artists haben (z.B. der Soundtrack zu "Judgement 
> Night")...
> Klar könnte ich hier einfach "V.A." speichern, aber dann ist eine Suche nach 
> Artist nicht möglich.
> 
> Puuuh lange Rede, kurzer Sinn: Ich bekomm einfach die Abfrage nicht hin, die 
> mir jedes Album genau einmal anzeigt, mit einem einzelnen Artist, 
> oder "V.A.", wenn es mehrere gibt.

ungestest, eventuell mal den CASE Syntax nachschlagen:


SELECT
	open_Music_Album.id AS albumID,
	open_Music_Album.name AS albumName,
	open_Music_Album.rating AS albumRating,
	open_Music_Album.image AS albumImage,
	UNIX_TIMESTAMP(open_Music_Album.updated) AS albumUpdated,
CASE
WHEN	COUNT(DISTINCT open_Music_Artist.id) > 1
THEN	'V.A.'
ELSE	open_Music_Artist.name
END	AS artistName
FROM
	open_Music_Album
LEFT  JOIN
	open_Music_Title
ON
	open_Music_Album.id = open_Music_Title.albumid
LEFT JOIN
	open_Music_Artist
ON
	open_Music_Artist.id = open_Music_Title.artistid
GROUP BY
	open_Music_Album.id



-- 
Sebastian Mendel

www.sebastianmendel.de

php::bar PHP Wiki   -   Listenarchive