Hi. Ich möchte ein Mailing machen und habe dafür zwei Abfragen generiert. Eine positiv Abfrage und eine negativ Abfrage. Positiv sind beispielsweise alle Kunden meiner Datenbank. Negativ sind Kunden, die in laufendem Vertragsverhältnis sind, und kein Mailing erhalten sollen.
Beide Abfrage füge ich in einer Abfrage zusammen. Nun sollen in dieser Abfrage alle IDs der Kunden rausfliegen, welche in beiden Listen vorkommen. Die Positiv-Liste soll also um die IDs der Negativliste bereinigt werden.
Wie gehe ich da vor?
SELECT Abfr_Mailing_Positiv.Anrede, Abfr_Mailing_Positiv.Nachname, Abfr_Mailing_Positiv.EmailAddress1, Abfr_Mailing_Positiv.ID_Kunde, Abfr_Mailing_Negativ.ID_Kunde
FROM Abfr_Mailing_Positiv LEFT JOIN Abfr_Mailing_Negativ ON Abfr_Mailing_Positiv.ID_Kunde = Abfr_Mailing_Negativ.ID_Kunde
WHERE (((Abfr_Mailing_Positiv.EmailAddress1) Is Not Null) AND ((Abfr_Mailing_Positiv.ID_Kunde)<>[Abfr_Mailing_Negativ].[ID_Kunde]));
Bringt gar kein Ergebnis...
Woran liegt das?
Hallo datekk,
Dies sollte helfen,
http://www.donkarl.com?FAQ3.16 (http://www.donkarl.com?FAQ3.16)
gruss ekkehard
Hi. Danke, aber der Link entspricht nicht der Fragestellung. Nochmal zur Erklärung:
TblPositiv enthält ALLE Datensätze
TblNegativ enthält bestimmte Datensätze
Die Datensätze, welche in TblNegativ sind, sind auch alle in TblPositiv enthalten.
TblPositiv enthält aber viel mehr Datensätze als TblNegativ.
Nun möchte ich aus der TblPositiv NUR die Datensätze Anzeigen, welche NICHT IDENTISCH mit TblNegativ sind.
Beispiel:
tblPos:
1
2
3
4
5
6
tblNegativ
2
3
4
Gesuchtes Ergebnis:
1
5
6
In meiner realen Umgebung sind es statt Tabellen aber Abfragen, falls dies ggf. eine Rolle spielt...
Hallo datekk,
SELECT P.Zahl
FROM tblPos AS P
WHERE P.Zahl Not In (SELECT N.Zahl FROM tblNegativ AS N)
gruss ekkehard
Tip Top... Danke. :) Ahhhh... ich muss noch viel lernen.... ??? ::)
Hallo,
oder so:
SELECT ZahlPos
FROM tblNeg RIGHT JOIN tblPos ON tblNeg.ZahlNeg=tblPos.ZahlPos
WHERE ZahlNeg Is Null
Dürfte bei großen Datenmengen auch schneller sein.
Danke auch Dir Klaus.
SELECT ZahlPos
FROM tblNeg RIGHT JOIN tblPos ON tblNeg.ZahlNeg=tblPos.ZahlPos
WHERE ZahlNeg Is Null
Was dann der FAQ entspricht, und ich mir gleich gedacht habe, aber nach
datekks Einwand nicht mehr getestet habe.
@Beaker: ja, mir kam die Formulierung in der FAQ so vor, als würde sie nicht zur Problemstellung passen, was sie wohl aber tut. Sorry. Da hatte ich wohl einen Knick im Kopf.