Hi Antje, André
Persönlich würde ich mich in diesem Fall jedoch für folgende Variante entscheiden:
select tab1.id,Name,info from tab1 left join tab2 on tab1_id=tab1.id order by id
Hier erhälst du zwar keine Nullzellen, aber gleiche Name erfüllen ja prinzipiell den gleichen Effekt. Werte die einen Eintrag in der Tab1 haben und keinen Eintrag in Tab2 werden ja sowieso zurückgegeben.
Die Frage ist hier, ob mit left joins zu arbeiten sinnvoll ist. So werden
auch Namen ausgegeben, für die es gar keine Entsprechungen in Tabelle 2 gibt.
Da MySQL in den neuen Versionen inner join kann, wäre das so besser, falls
Namen ohne Entsprechung nicht ausgegeben werden sollen.
Ein Sort auf die info von Tabelle 2 zusätzlich wäre wohl auch noch sinnvoll.
select a.id, a.name, b.info
from tab1 as a
inner join tab2 as b on (a.id = b.tab1_id)
order by a.id, b.info
IMHO ist mit selbem Name sehr einfach das nachher per PGM-Code in die
Struktur zu bringen.
Lies erste Zeile
mache mit dem namen zeile für die datenzeile
mache infozeile 1 für die datenzeile
for (alle zeilen ab erste zeile) {
if (name = lastname) {
mache infozeile n
} else {
mache namenzeile
mache infozeile 1
}
}
Ob die Variante mit der temporären Tabelle nicht schneller/resourcenschonender ist, müsste man
bei grossen Datenmengen allerdings erst ausprobieren (BENCHMARK).
Gruss Daniela