SQL: 3 Relationen JOINen
Geizhals » Forum » Programmierung » SQL: 3 Relationen JOINen (12 Beiträge, 119 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
SQL: 3 Relationen JOINen
12.02.2003, 17:15:43
Hallo!

Ich habe wieder einmal ein kleines Problem mit SQL (MS Access - JetSQL). Es geht um die bereits hier erwaehnte Datenbank.
Kurze Beschreibung:
  • Eine Relation Liste, mit den Attributen Liste.Titel, Liste.ID (und andere, die jetzt aber nicht relevant sind). In dieser Relation stehen die Alben drin.
  • Eine Relation Kommentare mit den Attributen Kommentare.AlbumID und Kommentare.Kommentar.
  • Eine Relation Tracks mit den Attributen Tracks.AlbumID und Tracks.Tracktitel.
Jetzt will ich diese drei Relationen so verknuepfen, dass ich eine Ergebnisrelation bekomme, in der Liste.Titel (Der Titel des Albums), Kommentaranzahl (Anzahl der abgegebenen Kommentare zu diesem Album) und Trackanzahl (Anzahl der Tracks auf diesem Album) stehen.

So schaffe es, eine der beiden Anzahlen zu bekommen:

SELECT Liste.Titel, COUNT(Tracks.TrackTitel) AS Trackanzahl
FROM Liste LEFT JOIN Tracks ON Liste.ID=Tracks.AlbumID
GROUP BY Liste.Titel;


Aber irgendwie bekomm ich es nicht so hin, dass beide Anzahlen richtig drin stehen. Bisher bin ich so weit gekommen:

SELECT Liste.Titel, COUNT(Tracks.TrackTitel) AS Trackanzahl, COUNT(Kommentare.Kommentar) AS Kommentaranzahl
FROM (Kommentare RIGHT JOIN Liste ON Liste.ID=Kommentare.ID) LEFT JOIN Tracks ON Liste.ID=Tracks.AlbumID
GROUP BY Liste.Titel;


Das schaut schon ganz gut aus, nur ein Problem gibt's: Die angezeigte Trackanzahl und die Kommentaranzahl sind beide gleich, naemlich das Produkt aus tatsaechlicher Track- und Kommentaranzahl (Ausnahme: wenn eine der beiden 0 ist, dann stimmen beide..)

Ich wuerde mich freuen, wenn mir da wer helfen koennte :)
(wenn notwendig, kann ich auch einen SQL-Prompt zur Verfuegung stellen - Details per PM, Ablehnung meinerseits ohne Angabe von Gruenden vorbehalten|-D)

Dank Euch!
--
The only antidote to mental suffering is physical pain.  -- Karl Marx
Habt's mich doch alle gern! Sagt's mir doch gleich dass ein *PIEP* wie ich keinen Fuehrerschein kriegt! >-(

Antworten PM Übersicht Chronologisch
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung