Join über drei Tabellen
Hallo Admins,
ich versuche gerade eine SQL Abfrage für meine Website zu basteln, aber irgendwie klappt das nicht so ganz. Den Aufbau der Tabellen habe ich mal als Bild hinzugefügt als Designer Import aus phpmyadmin.
Mein Ziel ist es eine SQL Abfrage zu machen die folgendes Ergebnis bringt:
Nachname Titel Vote
1 1 1
1 2 NULL
2 1 NULL
2 2 1
Also soll in der Abfrage geprüft werden, welcher User wie für welches Lied gevotet hat und ob er überhaupt gevotet hat.
Vielen Dank schonmal für eure Hilfe
ich versuche gerade eine SQL Abfrage für meine Website zu basteln, aber irgendwie klappt das nicht so ganz. Den Aufbau der Tabellen habe ich mal als Bild hinzugefügt als Designer Import aus phpmyadmin.
Mein Ziel ist es eine SQL Abfrage zu machen die folgendes Ergebnis bringt:
Nachname Titel Vote
1 1 1
1 2 NULL
2 1 NULL
2 2 1
Also soll in der Abfrage geprüft werden, welcher User wie für welches Lied gevotet hat und ob er überhaupt gevotet hat.
Vielen Dank schonmal für eure Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 335322
Url: https://administrator.de/contentid/335322
Ausgedruckt am: 24.11.2024 um 14:11 Uhr
5 Kommentare
Neuester Kommentar
Moin,
Am besten, du postest mal dein bisheriges Statement.
Neben einem LEFT JOIN gibt es ja auch noch - wer hattest es gedacht - ein RIGHT JOIN, und je nachdem, wie rum dein JOIN aufgebaut ist, muss man da dann mal schauen.
Google einfach mal im WWW nach den verschiedenen JOIN Möglichkeiten, dann wird dir so manches klarer;)
Gruß
em-pie
Am besten, du postest mal dein bisheriges Statement.
Neben einem LEFT JOIN gibt es ja auch noch - wer hattest es gedacht - ein RIGHT JOIN, und je nachdem, wie rum dein JOIN aufgebaut ist, muss man da dann mal schauen.
Google einfach mal im WWW nach den verschiedenen JOIN Möglichkeiten, dann wird dir so manches klarer;)
Gruß
em-pie
Moin Kimaro,
wenn du alle Datensätze aus USERS und alle Datensätze aus MUSIK brauchst und zusätzlich eine Information aus VOTES, falls vorhanden,,,
-> Dann ist die Übersetzung in SQL-Vokabeln ein CROSS JOIN von USERS und MUSIK und auf das Ergebnis ein LEFT JOIN auf VOTES.
CROSS JOIN heisst nix weiter als "jeder Datensatz mit jedem Datensatz aus der anderen Tabelle verbunden" . Bei 10 Usern und 10 Musikangeboten bekommst du also 100 Ergebniszeilen.
Der Alias "uxm" ergab sich als "users cross musik" quasi von selbst.
Grüße
Biber
wenn du alle Datensätze aus USERS und alle Datensätze aus MUSIK brauchst und zusätzlich eine Information aus VOTES, falls vorhanden,,,
-> Dann ist die Übersetzung in SQL-Vokabeln ein CROSS JOIN von USERS und MUSIK und auf das Ergebnis ein LEFT JOIN auf VOTES.
CROSS JOIN heisst nix weiter als "jeder Datensatz mit jedem Datensatz aus der anderen Tabelle verbunden" . Bei 10 Usern und 10 Musikangeboten bekommst du also 100 Ergebniszeilen.
SELECT uxm.*, v.vote FROM (
SELECT u.id as userid, u.vorname, u.nachname, m.id as musikid, m.title, m.interpret
FROM Users u, musik m ) as uxm
LEFT JOIN votes v on uxm.userid=v.userid and uxm.musikid=v.musikid
ORDER BY uxm.nachname, uxm.vorname, uxm.interpret, uxm.title ;
Der Alias "uxm" ergab sich als "users cross musik" quasi von selbst.
Grüße
Biber