Ich soll eine Abfrage für diese Aussage schreiben:relationale Division
List the names of customers, and album titles, for cases where the customer has bought the entire album (i.e. all tracks in the album)
Ich weiß, dass ich Abteilung sollte.
Hier ist meine Antwort, aber ich bekomme einige seltsame Syntaxfehler, die ich nicht lösen kann.
SELECT
R1.FirstName
,R1.LastName
,R1.Title
FROM (Customer C, Invoice I, InvoiceLine IL, Track T, Album Al) AS R1
WHERE
C.CustomerId=I.CustomerId
AND I.InvoiceId=IL.InvoiceId
AND T.TrackId=IL.TrackId
AND Al.AlbumId=T.AlbumId
AND NOT EXISTS (
SELECT
R2.Title
FROM (Album Al, Track T) AS R2
WHERE
T.AlbumId=Al.AlbumId
AND R2.Title NOT IN (
SELECT R3.Title
FROM (Album Al, Track T) AS R3
WHERE
COUNT(R1.TrackId)=COUNT(R3.TrackId)
)
);
ERROR: misuse of aggregate function COUNT()
Sie das Schema für die Datenbank finden here
Am Ende fehlt eine geschlossene Klammer.(Zwei offene Unterabfragen, eine schließende Klammer) –
'(AUSWÄHLEN R2.Titel FROM (Album Al, Track T) AS R2" scheint mir gefallen. Willst du einen Cross-Join zwischen Album und Track machen? – xQbert
habe ich behoben Klammer, aber ich bekomme immer noch diesen Fehler jetzt 'Missbrauch der Aggregatfunktion COUNT()' @Aaron D – RedHood148