PDA

Vollständige Version anzeigen : Nicht In (Select....


Eric Palm
05.07.2006, 09:12
Hallo Fachfrauen und Fachmänner,
ich möchte nur Datensätze anfügen wo die Werte in 3 Spalten nicht übereinstimmen. Bei einer Spalte geht das ja so:
INSERT INTO Grundtabelle_1 ( Nummer, Bezeichnung )
SELECT Grundtabelle.Nummer, Grundtabelle.Bezeichnung
FROM Grundtabelle
WHERE (((Grundtabelle.Nummer) Not In (SELECT Grundtabelle_1.[Nummer] FROM Grundtabelle_1 )));

Wie kann ich das aber machen wenn die Werte aus 3 Spalten nicht übereinstimmen dürfen bevor der Datensatz angefügt wird?

Kann mir da jemand einen Tip geben?

Gruß
Eric

J_Eilers
05.07.2006, 09:15
Hi,

vielleicht so?

WHERE Tab.Feld Not In (SELECT Feld FROM Tabelle) And
Tab.Feld Not In (SELECT Feld FROM Tabelle)
...

Ansonsten könnte man es auch über ein Join lösen, welches schneller ist, als ein Not In. Aber dafür müsste man schon mehr wissen, welche Felder verglichen werden sollen.

FW
05.07.2006, 09:26
... wenn's dann Not In sein soll, kann man die betroffenen Felder auch verknüpfen:
INSERT INTO ... WHERE feld1 & "_" & feld2 & "_" & feld3 NOT IN (SELECT feldA & "_" & feldB & "_" & feldC FROM ...)
...

Eric Palm
05.07.2006, 11:36
Hallo Jan und FW,
danke für die Hilfe. Ich werde es ersteinmal ohne Join versuchen zu lösen.

Natürlich wäre ich auch überaus Neugierig zu wissen wie das über ein Join zu lösen wäre aber ich will es ersteinmal selbst probieren.
Wenn ich nicht mehr weiter komme oder besser weiß wie ich nun überhaupt meine Tabellen aufbauen will und muss melde ich mich wieder. Mir war in erster Linie ersteinmal wichtig zu wissen das es überhaupt geht.

Danke und Gruß
Eric

J_Eilers
05.07.2006, 12:30
Schau dir mal das 1. Beispiel (http://www.jans-hp.de/?section=access&thema=sql&page=bsp) an.