Clanintern Clanintern Clanintern

Forum

Öffentliche Foren
FORUM: Spiele & Computer THEMA: 3 Tabellen zusammenfassen - outer join?
AUTOR BEITRAG
phoeniks

RANG Godlike

#1 - 01.02 08:34

Ich habe 3 Tabellen A, B und C
Diese sind gleich aufgebaut nach dem Muster

Kundennummer Wert

z.B.
code:

TabelleA
Kundennummer    Wert
1               xy
2               zz
5               ii

TabelleB
Kundennummer    Wert
3               kk
7               si
5               rl

TabelleC
Kundennummer    Wert
1               lo
5               sr
4               la

Das Ergebnis soll so aussehen:
Kundennummer    WertA   WertB   WertC
1               xy              lo
2               zz
3               kk
4                               la
5               ii      rl      sr
7                       si


Bei einem normalen Join würde ich die ja nur die Werte bekommen,
die in allen 3 Tabellen gleich sind und existieren. Es gibt aber nicht
alle Kundennummern in allen Tabellen - deshalb bräuchte ich wohl
einen Outer Join.
Wie muß der denn für 3 Tabellen aussehen? bzw. gibt es überhaupt eine Möglichkeit so ein Ergebnis wie ich es möchte rauszubekommen - mit einem left oder right outer join bekomme ich ja immer nur Ergebnisse aus einer Tabelle mit selbst wenn kein passendes Gegenstück in der ersten Tabelle existiert. Ich bräuchte praktisch eine Art outer join der left und right gleichzeitig macht.
Allanon // alex

CI-Chef

RANG Prophet of Clanintern

#2 - 01.02 12:54

hast du MySQL >= 4.0?

wenn ja, ist wohl UNION dein freund

--> Dokulink MySQL 4.1 en
--> Dokulink MySQL 5.1 de (diesen hier solltest du verwenden können, an der syntax hat sich afaik nix geändert
phoeniks

RANG Godlike

#3 - 01.02 12:58

Wenn ich das recht verstehe, fügt UNION doch nur die Ergebnisse zusammen, verknüpft sie aber nicht anhand der Kundennummer - das bräuchte ich aber.

Also bei Union käme raus:
code:

1               xy
1               lo
2               zz
3               kk 
4               la
5               ii
5               rl
5               sr
7               si
Allanon // alex

CI-Chef

RANG Prophet of Clanintern

#4 - 01.02 13:18

das stimmt

hab kurz gegoogled.. das was du brauchst ist ein FULL OUTER JOIN
allerdings hab ich nichts gefunden, bzw nur das, dass mysql das nicht unterstützt?
phoeniks

RANG Godlike

#5 - 01.02 13:20

Danke - das hilft mir auch schon mal weil ich wenigstens weiß dass es wohl so einfach nicht geht.
Dann muß ich mir ein kleines PHP Script basteln dass die Daten ein bisschen rumschiebt bis es paßt.

Danke! Der Thread kann zu.
Allanon // alex

CI-Chef

RANG Prophet of Clanintern

#6 - 01.02 13:21

hab noch was gefunden: http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/
da werden 4 methoden beschrieben, wie man das simulieren kann
phoeniks

RANG Godlike

#7 - 02.02 06:55

Vielen Dank - ich les mich mal durch.