dla zadania szkolnego muszę napisać zapytanie, w którym muszę dołączyć do wszystkich tabel w bazie danych. Baza danych wygląda następująco:
Tak więc zapytanie musi połączyć wszystkie tabele i pokazać wszystkie rekordy. Próbuję to zrobić, ale przez ostatnie kilka dni to nie działało. Czy ktoś może mi pomóc?
Co próbowałem:
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.
Odpowiedzi:
0 dla odpowiedzi № 1Jeśli musisz wyświetlić wszystkie wiersze ze wszystkich tabel przy użyciu JOIN, potrzebujesz FULL JOIN
aby wyświetlić rekordy.
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
Typ połączenia JOIN, który odtwarzałeś z klauzulami WHERE, to INNER JOIN
gdzie wyświetlane są tylko rekordy, które mają odpowiedników we wszystkich tabelach.
0 dla odpowiedzi nr 2
Zakładając, że Gebruiker jest głównym stołem, możesz dołączyć do poniższego
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.*
można zastąpić przez SELECT *
Recenzja może dołączyć do tabeli Gebruiker:
SELECT G.*, R.*
FROM gebruiker AS G
JOIN review AS R ON R.idGebruiker = G.idGebruiker
lub tabela Track:
SELECT T.*, R.*
FROM track AS T
JOIN review AS R ON R.idTrack = T.idTrack
Podobnie tabela TrackAankoop może dołączyć do tabeli Aankoop:
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
lub tabelę śledzenia;
SELECT T.*, TA.*
FROM track AS T
JOIN trackaankoop AS TA ON TA.idTrack = T.idTrack