SQL-Query< Schnittmenge 2-er Tabellen

ctac

Mitglied
Hallo Leute

ich hab ein Problem. ich will aus 2 tabellen eine schnittmenge erstellen
1 tabelle id, x, y
2 tabelle id, x, y

es sollen alle datensätze aus tabelle1 gelöscht werden bei dennen es keinen x und y in der 2 tabelle gibt.

die Abfrage soll unter Access2000 funktionieren.

vielen dank im vorraus.
 
Hi!

Klick dir die Abfrage doch einfach zusammen!;)

Unter Access heisst die Abfrage "Löschabfrage".
So könnte das Ergebnis dann aussehen:

DELETE tabEins.id, tabEins.x, tabEins.y
FROM tabEins
WHERE (((tabEins.x)=[tabZwei]![x]) AND ((tabEins.y)=[tabZwei]![y]));
 
Original geschrieben von Slizzzer
Hi!

Klick dir die Abfrage doch einfach zusammen!;)

Unter Access heisst die Abfrage "Löschabfrage".
So könnte das Ergebnis dann aussehen:

DELETE tabEins.id, tabEins.x, tabEins.y
FROM tabEins
WHERE (((tabEins.x)=[tabZwei]![x]) AND ((tabEins.y)=[tabZwei]![y]));
das problem ist irgendwo an anderer stelle,
denn soweit ich diese SQL-Anweisung ausführe kommt eine messagebox mit einem feld, die mich nach dem Wert von tabZwei.y und TabZwei.x fragt ..

und bei diesem Feld darf ich nur eine Zahl eingeben, sonst kommt eine Fehlermeldung.

Wenn ich die eine Verschachtelte Anfrage formuliere, mussen denn die Tabellen in einer Beziehung stehen ?

Grüsse.
 
Wenn Werte über ein Dialogfeld abgefragt werden, dann bedeutet das, dass die Abfrage die Werte sonst nirgends findet. Das wiederum deutet darauf hin, dass Du meine Abfrage nicht mit deinen Tabellen- bzw. Feldnamen angepasst hast.
tabEins und tabZwei sind die Namen der Tabellen, die ich als Beispiel benutzt habe.;)

Eine Beziehung brauchen die Tabellen nicht zu haben. Du benutzt praktisch die eine Tabelle als nur Kriterium um in der anderen was zu löschen.
 
Original geschrieben von Slizzzer
Wenn Werte über ein Dialogfeld abgefragt werden, dann bedeutet das, dass die Abfrage die Werte sonst nirgends findet. Das wiederum deutet darauf hin, dass Du meine Abfrage nicht mit deinen Tabellen- bzw. Feldnamen angepasst hast.
tabEins und tabZwei sind die Namen der Tabellen, die ich als Beispiel benutzt habe.;)

Eine Beziehung brauchen die Tabellen nicht zu haben. Du benutzt praktisch die eine Tabelle als nur Kriterium um in der anderen was zu löschen.

vielen dank, hab aber einen tip bekommen ..

DELETE *
FROM test
WHERE NOT EXISTS(SELECT * FROM setup WHERE X=test.X AND Y=test.Y);
 
kann ich meine letzte query noch so editieren, dass duplikate automatisch mitgelöscht werden (nach X und Y)..

mfg.
 
hat denn deine Tabelle einen eindeutigen schlüssel?

wenn ja dann

delete from test
where id in (Select max(id) from test having count(x) > 1 group by x)
 
Zurück