MySQL5: right join

jeipack

Erfahrenes Mitglied
Hi
Ich bin gerade ein wenig verwirrt. Habe eine recht relativ grosse Abfrage die ich nun mit einem right join erweitern wollte (da die Abfrage viel zu gross ist hier eine Einfache darstellung):

SQL:
Select count(tbl_1.id), ifnull(tbl_x.id, 0) as x from tbl_1
left join tbl_2 on tbl_1.id=tbl_2.id
left join ..
left join ..
left join tbl_x on tbl_x.id=tbl_4.fs_x
group by x
Nun sagen wir gibt es zwei Datensätze als Resultat:
123, 0 (das sind die NULL Werte)
321, 2 (einzige ID die vorhanden ist)

Erweitet wurde es nun wie folgt:
SQL:
Select count(tbl_1.id), tbl_sort.x from tbl_1
left join tbl_2 on tbl_1.id=tbl_2.id
left join ..
left join ..
left join tbl_x on tbl_x.id=tbl_4.fs_x
right join tbl_sort on tbl_sort.x=ifnull(tbl_x.id, 0) and tbl_sort.`index`='x'
group by tbl_sort.x
in der tbl_sort sind alle IDs vorhanden die es gibt (sagen wir von 1 bis 5)
also müsste nun das Resultat doch so aussehen:
123, 0
null, 1
321, 2
null, 3
null, 4
null, 5

Tut es aber nicht, es verhaltet sich genau gleich wie ein left join und Zeigt mir nur das obige Resultat an.

Was mache ich also falsch?


Zudem verwirrt mich noch, dass folgendes in der Inlinehilfe des Querybrowsers steht:
RIGHT JOIN works analogously to LEFT JOIN. To keep code portable across databases, it is recommended that you use LEFT JOIN instead of RIGHT JOIN.

Wobei dies nicht von dev.mysql.com bestätigt wird:
Die Implementierung von RIGHT JOIN erfolgt analog zu der von LEFT JOIN, wobei lediglich die Rollen der Tabellen umgekehrt werden.

Hoffe ihr könnt mir helfen

Grüsse und vielen Dank
jeipack
 
Zuletzt bearbeitet von einem Moderator:
Zurück