Blacklist

Papenburger

Erfahrenes Mitglied
Hallo,

folgendes Problem habe ich. Ich habe zwei Tabellen:

Tabelle A
ID - Host - Message
1 - 39 - Test 1
2 - 50 - Test 1
3 - 39 - Test 2
4 - 39 - Test 1

Tabelle B
ID - Host - Message
1 - 39 - Test 1

Nun soll aus Tabelle A nur die Einträge angezeigt werden, die nicht in Tabelle B vorhanden sind. Dabei soll nach dem Host und nach der Message gefiltert werden.

In diesem Beispiel sollten eigentlich folgende Einträge aus Tabelle A wieder ausgegeben werden:
2 - 50 - Test 1
3 - 39 - Test 2

Um nur nach der Message zu filtern habe ich folgendes Statement:
PHP:
$abfrage="Select * from Tabelle A where msg not in (SELECT msg FROM Tabelle A as l, Tabelle B as lb WHERE l.msg = lb.message)";

Wer kann mir da weiterhelfen?


MFG
Papenburger
 
Da hab ich mich wohl verlesen ;)

Code:
SELECT a.* FROM a
LEFT JOIN b ON (a.message = b.message  AND a.host = b.host)
WHERE b.id IS NULL
 
Hallo Papenburger,

Du brauchst folgendes Statement
Code:
SELECT * 
FROM a
LEFT JOIN b ON a.host = b.host
AND a.message = b.message
WHERE ISNULL(
b.host
)

Probier den Join mal ohne die WHERE Klausel aus. Dann siehst Du, das in der Ergebnismenge diejenigen Datensätze, die keine Entsprechung in der Tabelle B haben, in den Spalten ein Null als Wert aufweisen. Diesen kannst Du dann in der WHERE Klausel mit ISNULL prüfen.

Viele Grüße
jrook
 
Zurück