MS-Access: Abgleich Kd.-Nr. über mehrere Tabellen

Habe diese Tabellen:

  1. Alle Kunden
  2. Kunden mit Auftrag letztes Jahr
  3. Kunden mit Auftrag dieses Jahr
  4. Kunden, die heuer nichts kaufen wollen (Absagen)
    Möchte nun in Nachfaß-Mailing nur die Kunden aus Tabelle 1
    anschreiben, die in Tabelle 2 enthalten sind, aber nicht in Tabelle 3
    oder 4 (sprich: alle Käufer vom letzten Jahr, die heuer noch nicht
    gekauft haben und auch keine Absage haben.

Da in allen Tabellen die Kd-Nr. enthalten ist, reicht es, den
Abgleich nur über diese Kd.-Nr. laufen zu lassen (ist also kein
Abgleich über Adresse, Name etc. nötig).
Für XLS habe ich z.B. eine SVERWEIS-Lösung, die aber aufgrund der
über 120.000 Datensätze XLS nicht verwendbar ist

NB: Verwende Access XP (Access 2002, SP 1), bin aber Access Neuling.

Moin, Jugaran,

select \* from 1 
where id in (select id from 2)
 and id not in (select id from 3)
 and id not in (select id from 4) 

NB: Verwende Access XP (Access 2002, SP 1), bin aber Access
Neuling.

Das ist SQL. In Access erstellst Du eine neue Abfrage ohne Assistenten, öffnest sie im Entwurfsmodus und schaust dann nach dem Symbol zum Öffnen, da findest Du den Button „SQL“.

Gruß Ralf

Hallo Drambeldier,

die Systematik habe ich zwar grundsätzlich verstanden - scheitere aber bei den Details. Wenn meine Tabellen so heißen:
„Adressen“ (alle Kunden-Adressen = Tab 1)
„AE2007“ (Auftragseingang 2007 = Tab 2)
„AE2008“ (Auftragseingang 2008 = Tab 3)
„Absage2008“ (will 2008 nichts bestellen = Tab 4)

und ich nach Kunden-Nr abgleiche (heißt in Tabellen: „Kunden Nr“ - in dieser Schreibweise) => wie müßte dann die SQL-Abfrage mit den tatsächlichen Namen lauten?

NB: habe die Abfrage so versucht:
a) Verknüpfung der 4 Tabellen 1x über „Kunden Nr“ und 1 x über „ID“ => beide Male klappts nicht
b) Wie muß denn die Benennung der Felder lauten: in Tabelle „AE2007“ heißt die Kd.-Nr. nach der Verknüpfung z.B. „AE2007.[Kunden Nr]“

Ciao… Jugaran (Hoffe, ich bin kein hoffnungsloser Fall!!!)

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Jugaran,

heißt in Tabellen: „Kunden Nr“ - in dieser Schreibweise

sehr ungeschickt, weil das Leerzeichen in Access (so wie überall anders auch) ein Trennzeichen1 ist. Solche Namen müssen deshalb mit eckigen Klammern umkränzt werden: [Kunden Nr].

wie müßte dann die
SQL-Abfrage mit den tatsächlichen Namen lauten?

Du wirst doch wohl in der Lage sein, die 1, 2, 3, 4 in die entsprechenden Tabellennamen umzusetzen.

beide Male klappts nicht

„klappt nicht“ gibt’s nicht.

Eine Verknüpfung ist erst dann eine Verknüpfung, wenn die verknüpfte Tabelle eine Spalte hat, die einen Schlüssel aus der anderen Tabelle enthält und Access davon weiß. Voraussetzung dafür sind gleiche Feldtypen; Einschränkung dazu: Verknüpfungen auf Felder vom Typ Autowert werden als long abgebildet.

Was verknüpft ist, zeigt das Bild „Beziehungen“; dort sollten die Verknüpfungen auch angelegt werden.

Gruß Ralf

1Was bringt Dich dazu, zwischen Kunden und Nr ein Leerzeichen einzufügen?

Hallo Drambeldier,

hatte einen Denkfehler - hab’ die SQL-Abfrage MIT verküpften Tabellen statt OHNE gemacht (da war dann natürlich in der SQL-Ansicht eine andere Nomenklatur mit „INNER JOIN“ etc und „Kunden Nr.AE2007“). Da hab’ ich dann den Zusammenhang mit Deiner Lösung nicht mehr gesehen - mittlerweile hab ichs aber hinbekommen!!!

Vielen Dank noch mal für Deine Super-Hilfe … Jugaran

NB: Die dämliche Schreibweise mit Blank bei Kunden Nr stammt übrigens nicht von mir - das haben unsere EDV-„Cracks“ so abgestellt!!! Habe nur die Daten 1:1 aus einer Schnittstelle zur Oracle-Datenbank als Tabellen ausgegeben - war zugegebenerweise dann aber zu faul, in jeder Tabelle die Schreibweise zu ändern (zumal ich das dann bei jeder neuen aktualisierten Datenausgabe wieder machen müßte!).

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]