Axel Richter: Join-Problem

Beitrag lesen

Hallo,

Ich habe 2 Tabellen in MySQL:

tab1:
id | ...
1  | ...
2  | ...
3  | ...
4  | ...
5  | ...

tab2
tab1_id | content
1       | 13
1       | 14
2       | 12
4       | 12
4       | 11

Den Einträgen aus tab1 sind in tab2 null bis viele contents zugeordnet.
Nun möchte ich - klingt eigentlich ganz leicht - alle einträge aus tab1 mit allen zugehörigen contents aus tab2.

Mit meinem wenig Join-Wissen habe ich aber schon entdeckt:
Bei einem normalen Join bekomme ich Einträge aus tab1 nur, wenn es auch einen passenden aus tab2 gibt.

Ja, aber um dies zu ändern, gibt es OUTER JOINS, wie z.B. LEFT JOIN und RIGHT JOIN.

Ausserdem bekomme ich den Eintrag aus tab1 sooft, wie es eine passende tab2-Zeile gibt.

Ja, das ist, glaube ich, Dein Problem. Ein DBMS, wie sie heute üblich sind, speichert Daten zweidimensional in Zeilen (Datensätze) und Spalten (Felder) und es wertet sie auch so aus. Das Beste, was Du mit einem

SELECT tab1.id, tab2.content
FROM tab1 LEFT JOIN tab2 ON tab1.id = tab2.tab1_id;

erhalten kannst, ist:

tab1.id | tab2.content
1       | 13
1       | 14
2       | 12
3       | null
4       | 12
4       | 11
5       | null

Daraus:

id | content | content
1  | 13      | 14
2  | 12      |
3  |         |
4  | 12      | 11
5  |         |

zu machen, muss Deine auswertende Programmlogik leisten, denn, wie Du siehst, ist das keine eindeutig zweidimensionale Darstellung mehr.

viele Grüße

Axel