LEFT JOIN - Ist das mein richtiger Ansatz?

skywalkerluk

Grünschnabel
Hallo zusammen,

ich steh vor folgendem Problem:

Tabelle LIGA:
spielID - ergebnis
1 - 2:1
2 - 1:1
3 - 3:1
4 - 4:1
5 - 2:2
6 - 1:3
7 - 5:1
8 - 2:1


Tabelle TIPP:
User_ID - spielID - tipp
503 - 1 - 2:2
503 - 2 - 1:1
503 - 3 - 1:3
//Den vierten Datensatz gibt es nicht weil der User nich getippt hat.
503 - 5 - 2:3
503 - 6 - 1:3
503 - 7 - 5:2
503 - 8 - 2:4

Folgende Ausgabe hätte ich gerne:
User_ID - spielID -ergebnis - tipp
503 - 1 - 2:1 - 2:2
503 - 2 - 1:1 - 1:1
503 - 3 - 3:1 - 1:3
503 - 4 - 4:1 - NULL
503 - 5 - 2:2 - 2:3
503 - 6 - 1:3 - 1:3
503 - 7 - 5:1 - 5:2
503 - 8 - 2:1 - 2:4

Mein Versuch:
SELECT a.spiel_id, a.ergebnis, b.tipp
FROM LIGA as a
LEFT JOIN TIPP as b
ON a.spiel_id = b.spiel_id
WHERE b.User_ID = 503;

Leider zeigt der mir hier aber nur 7 Datensätze anstatt der gewünschten 8.
Ich möchte also dass die spiel_id von LIGA immer angezeit wird, auch wenn der user nicht getippt hat.

Wo ist mein Denkfehler?

Vielen Dank vorab für eure Hilfe.
 
Ist etwas komplexer zum umsetzen
1) Kombiniere alle Spiele mit allen Usern
2) Verbinde diese Kombination mit den den Tipps

Unter der Annahme dass du noch eine User-Tabelle hast:
1)
SQL:
SELECT
	u.user_id,
	l.spiel_d,
	l.ergebnis
FROM
	users AS u,
	liga AS l
2)
SQL:
SELECT
	a.spiel_id,
	a.user_id,
	a.ergebnis,
	t.tipp
FROM
	(
		-- erstes query
	) AS a
	LEFT JOIN tipp AS t
		ON a.user_id = t.user_id
		AND a.spiel_id = t.spiel_id
WHERE
	a.user_id = 503
Das ergibt dann so etwas
SQL:
SELECT
	a.spiel_id,
	a.user_id,
	a.ergebnis,
	t.tipp
FROM
	(
		SELECT
			u.user_id,
			l.spiel_d,
			l.ergebnis
		FROM
			users AS u,
			liga AS l
	) AS a
	LEFT JOIN tipp AS t
		ON a.user_id = t.user_id
		AND a.spiel_id = t.spiel_id
WHERE
	a.user_id = 503
 
Zuletzt bearbeitet von einem Moderator:
SQL:
SELECT
    a.User_ID,
    a.spielID,
    a.tipp
    b.ergebnis
FROM
    TIPP AS a
INNER JOIN
    LIGA AS b
       ON a.spielID = b.spielID
WHERE
    a.User_ID = 503

Ich glaub das sollte ebenfalls funktionieren und ist zudem noch um Welten kürzer... :D
€: was ich übersehen habe ist das Spiel, wo kein Tipp abgegeben wurde. Dazu müsste man halt eine extra Abfrage machen.
 
Zuletzt bearbeitet:
Zurück