join erzeugt Dubletten
am 18.06.2007 15:40:01 von echoHallo Leute,
es gibt ja im Netz einige Beschreibungen zu join. Aber mein Problem
wird da nicht behandelt. Oder ich hab's nicht gefunden.
Vereinfacht dargestellt gibt es zwei Tabellen:
'mensch(ort,pkz,...)' und 'maschine(ort,standort,...)'.
Die Zuordnung (mensch.pkz wird in maschine.standort gespeichert)
gehorcht der Bedingung 'maschine.ort = mensch.ort', d.h. kein
Fremder bekommt eine Maschine.
Die Abfrage: SELECT * FROM maschine LEFT JOIN mensch
ON maschine.standort = mensch.pkz
WHERE maschine.ort = 'C'
liefert die gewünschte Liste. Herrenlose Maschinen werden ohne
Menschdaten aufgelistet. Mensch wird nach Ortswechsel weiterhin
gelistet, bekommt aber am alten Ort keine Maschine mehr.
Das ist alles in Ordnung.
Jetzt aber kommt Mensch mit Zweitwohnung ins Spiel. Also habe ich
mensch.pkz von unique auf index degradiert und einen Datensatz mit
gleicher pkz aber anderem Ort gespeichert.
Die Erkenntnis ist, dass join nicht an der ersten Fundstelle stoppt.
Die Zeile wird doppelt erzeugt, das ist nicht richtig.
Falls es da eine Lösung gibt wäre ich dankbar, wenn mir das jemand
verraten könnte.
MfG
hjs