# Referentielle Integrität herstellen



## starbug (8. November 2011)

Hallo,

habe mal folgendes Problem. Ich arbeite mit Access und habe dort 2 Tabellen eine Mastertabelle und eine untergeordnete. Ich möchte nun eine Referentielle Integrität herstellen, was aber nicht geht da offenbar Daten in der Untertabelle existieren, die es in der Mastertabelle nicht gibt. Meine Frage ist nun kann ich mir irgendwie anzeigen lassen welcher Datensatz gegen die referentielle Integrität verstösst bzw. welchen Datensatz ich meiner Mastertabelle noch zufügen muss**** Es sind sehr viele Daten deshalb ist das schlecht von Hand zu machen.


----------



## tombe (8. November 2011)

Es gibt doch beim Abfrage-Assistent die Möglichkeit eine solche Abfrage zu erstellen!

Aber so in etwa sollte die Abfrage aussehen wenn du sie selber schreibst:


```
SELECT Tabelle1.ID FROM Tabelle1 LEFT JOIN Tabelle2 ON Tabelle1.ID = Tabelle2].ID
WHERE Tabelle2.ID Is Null
```

Als Ergebnis erhälst du die ID aller Datensätze die es in Tabelle2 nicht gibt. Du musst halt die Tabellen- und Feldnamen noch entsprechend anpassen!


----------



## starbug (8. November 2011)

Hmm,

bekommen immer nen Fehler der da lautet: Syntaxfehler (fehlender Operator) im Abfrageausdruck


----------



## tombe (8. November 2011)

Dann zeig mal die SQL-Anweisung deiner Abfrage und schreib dazu wie die Tabellen und die jeweiligen Felder der Tabele heißen!

*NACHTRAG:* Habe eben entdeckt das ich oben einen Schreibfehler drin habe.


```
Tabelle1.ID = Tabelle2].ID
```

Da muss die schließende, eckige Klammer nach Tabelle2 weg, richtig wäre:


```
Tabelle1.ID = Tabelle2.ID
```


----------



## starbug (8. November 2011)

Du meinst aber mit Tabelle 1 die Mastertabelle oder?


----------



## tombe (8. November 2011)

Ja, Tabelle 1 wäre Master.


```
Tabelle1
ID | Feld1
01 | aaa
02 | bbb
03 | ccc
05 | eee
06 | fff
07 | ggg

Tabelle2
ID | Feld1
01 | 1-a
02 | 2-b
03 | 3-c
04 | 4-d
05 | 5-e
06 | 6-f
```

Liefert als Ergebnis die ID "07" der Tabelle1


----------



## starbug (8. November 2011)

Ja so hab ich das auch verstanden. Ich werde es morgen testen, hab jetzt Feierabend .

Danke schonmal für deine Antwort


----------

