![](/file/23459/chip_04_2004.iso/images/spacing.gif) |
Inklusionsverknüpfungen in Access
Ich habe unter Access 7.0 eine Datenbank angelegt. Dabei habe ich zwei Tabellen mit einer linken Inklusionsverknüpfung in eine 1:N-Beziehung gesetzt. Wenn ich nun eine Abfrage durchführe, erhalte ich dennoch nur das Ergebnis eines Inner Join. Liegt das an mir oder ist dies ein Fehler von Access?
Hierbei ist wohl eher von einem Mißverständnis als von einem Fehler zu sprechen. Der Abfragegenerator von Access überführt Ihre Kommandos in eine SQL-Anweisung. Dabei greift er auch auf Informationen aus der Datenbankdefinition zurück. Wenn Sie nach dem Anlegen der Abfrage in der Datenbankdefinition Änderungen vornehmen, reagiert der Abfragegenerator nicht mehr darauf. Deutlich wird dieses Verhalten zum Beispiel, wenn Sie eine Tabelle aus der Datenbank löschen. Beim nächsten Start einer Abfrage, die auf die gelöschte Tabelle zugreifen möchte, erhalten Sie eine Fehlermeldung.
Unbemerkt bleibt hingegen das Ändern von Beziehungen: Da sie alle notwendigen Elemente auffinden kann, gibt die SQL-Engine eine Datenmenge zurück. Daß deren Inhalt vielleicht anders als vor der Änderung aussieht, ist elementarer Bestandteil der deklarativen Sprache SQL. Es bleibt nun Ihnen überlassen, die nötigen Änderungen innerhalb der betroffenen Abfragen von Hand vorzunehmen.
In Ihrem Fall hat sicherlich der Abfragegenerator beim Anlegen eine rechte Inklusionsverknüpfung gefunden und daraufhin entsprechend einen Right Join angelegt. Auch wenn Sie nachträglich die Definition in der Datenbank auf eine linke Inklusionsverknüpfung ändern, bleibt der Right Join in der Abfrage erhalten. Dieses Verhalten ist insbesondere dann von Bedeutung, wenn Sie Daten entgegen der typischen Verknüpfung auswerten wollen.
Um das Problem zu beheben, öffnen Sie die betreffende Abfrage in der SQL-Ansicht und tauschen dort einfach das Wort Right gegen Left aus. Dann sollten Sie die Ergebnisse wie gewünscht angezeigt bekommen.
|
![](/file/23459/chip_04_2004.iso/images/spacing.gif) |