Tom: Problem mit ASP und Access

Beitrag lesen

Guten Morgen

Zuerst wird ein passendes SQL-Statement benötigt:

SELECT An.Anrede, Ad.Vorname, Ad.Nachname, Ad.Strasse FROM Anrede AS An, Adresse AS Ad WHERE An.AnredeID = Ad.AnredeID

Damit erhälst Du nur die Spalten Anrede, Vorname, Nachname und Strasse zurück, jedoch verknüpft über die AnredeID in beiden Tabellen.

Das Problem hier ist, dass Dir nur die Datensätze zurückgegeben werden, die im Feld AnredeID der Tabelle Adresse einen Wert enthalten.
Es werden folglich alle Datensätze ausgefiltert, bei denen das Feld Adresse.AnredeID NULL ist.

Um jedoch alle Datensätze aus der Tabelle Adresse zu erhalten, jedoch ggf. den Wert NULL in An.Anrede (falls Ad.AnredeID NULL ist) muss ein sogenannter Outer-Join verwendet werden.
Das ist eine besondere Verknüpfung der beiden Tabellen, bei der alle Datensätze der einen Tabelle angezeigt werden und nur die dazu passenden Datensätze aus der anderen Tabelle.

Der Outer-Join (je nach Richtung auch Left- oder Right-Join genannt) wird je nach DB-Engine unterschiedlich definiert.
Bei Access sieht dies so aus:

SELECT An.Anrede, Ad.Vorname, Ad.Nachname, Ad.Strasse FROM Adresse AS Ad LEFT JOIN Anrede AS An ON Ad.AnredeID = An.AnredeID

Zu Vollständigkeit: Das Gegenstück zu Outer-Join ist Inner-Join, und dies ist die normale Verknüpfung von Tabellen.
In Access werden dem entsprechend die normalen Verknüpfungen so definiert:

SELECT An.Anrede, Ad.Vorname, Ad.Nachname, Ad.Strasse FROM Adresse AS Ad INNER JOIN Anrede AS An ON Ad.AnredeID = An.AnredeID

Die ganz oben genannte Variante mit der Verknüpfung in der Where-Klausel ist jedoch bei allen SQL-Systemen verwendbar.

Mit diesem SQL-Statement solltest Du nun in der Lage sein, Dein Problem zu lösen.

Grüsse
Tom