Für eine Schulaufgabe muss ich eine Abfrage schreiben, bei der ich alle Tabellen einer Datenbank zusammenfügen muss. Die Datenbank sieht folgendermaßen aus:
Die Abfrage muss also alle Tabellen verknüpfen und alle Datensätze anzeigen. Ich versuche das, aber in den letzten Tagen hat es nicht funktioniert. Kann mir jemand helfen?
Was ich versucht habe:
SELECT *
FROM gebruiker G,
gebruiker G2 gebruikertype GT,
aankoop A,
trackaankoop TA,
track T,
genre GE
WHERE G.idGebruikertype = GT.idGebruikertype
AND G.idGebruiker = A.idGebruiker
AND A.idAankoop = TA.idAankoop
AND TA.idTrack = T.idTrack
AND T.idGebruiker = G2.idGebruiker
AND T.idGenre = GE.idGenre.
Antworten:
0 für die Antwort № 1Wenn Sie alle Zeilen aller Tabellen mit JOIN anzeigen müssen, benötigen Sie eine FULL JOIN
um die Datensätze anzuzeigen.
SELECT *
FROM gebruiker G
FULL JOIN gebruikertype GT ON G.idGebruikertype = GT.idGebruikertype
FULL JOIN aankoop A ON G.idGebruiker = A.idGebruiker
FULL JOIN trackaankoop TA ON A.idAankoop = TA.idAankoop
FULL JOIN track T ON TA.idTrack = T.idTrack
FULL JOIN gebruiker G2 ON T.idGebruiker = G2.idGebruiker
FULL JOIN genre GE ON T.idGenre = GE.idGenre
Die Art von JOIN, die Sie mit den WHERE-Klauseln erstellt haben, war a INNER JOIN
Dabei werden nur die Datensätze angezeigt, die in allen Tabellen Korrespondenten enthalten.
0 für die Antwort № 2
Angenommen, Gebruiker ist die Haupttabelle, an der Sie Folgendes anschließen könnten
SELECT G.*, R.*, GT.*, T.*, TG.*, A.*, C.*, TA.*
FROM gebruiker AS G
JOIN gebruikertype as GT ON GT.idGebruikerType = G.idGebruikerType
JOIN review AS R ON R.idGebruiker = G.idGebruiker
JOIN track AS T ON T.idGebruiker = G.idGebruiker
JOIN genre as TG ON TG.idGenre = T.idGenre
JOIN aankoop AS A ON A.idGebruiker = G.idGebruiker
JOIN creditaankoop AS C ON C.idAankoop = A.idAankoop
JOIN trackaankoop as TA ON TA.idAankoop = A.idAankoop
SELECT G.*, R.*, GT.*, T.*, TG.*, A.*, C.*, TA.*
kann mit ersetzt werden SELECT *
Review kann entweder an der Gebruiker-Tabelle teilnehmen:
SELECT G.*, R.*
FROM gebruiker AS G
JOIN review AS R ON R.idGebruiker = G.idGebruiker
oder die Spurtabelle:
SELECT T.*, R.*
FROM track AS T
JOIN review AS R ON R.idTrack = T.idTrack
In ähnlicher Weise kann der TrackAankoop-Tisch mit dem Aankoop-Tisch verbunden werden:
SELECT G.*, A.*, TA.*
FROM gebruiker AS G
JOIN aankoop AS A ON A.idGebruiker = G.idGebruiker
JOIN trackaankoop AS TA ON TA.idAankoop = A.idAankoop
oder die Spurtabelle;
SELECT T.*, TA.*
FROM track AS T
JOIN trackaankoop AS TA ON TA.idTrack = T.idTrack