Abfrage über zwei Tabellen nicht enthaltene ausgeben

kramoo

Mitglied
Habe zwei Tabellen

tabelle1
id|name|url|aid|...

tabelle2
id|name|link|....

Möchte alle Datensätze aus tabelle2 wo tabelle1.aid nicht gleich tabelle2.id.
Also alles aus tabelle2 die nicht die Zahlen aus tabelle1.aid enthält.

Leider habe ich momentan keine Idee wie ich das mit einer Abfrage lösen kann?
Datenbank ist eine MySQL.
Bitte um Hilfe.
Danke
 
Naiv und unperformant:
SQL:
SELECT * FROM tabelle2 WHERE id NOT IN (SELECT aid FROM tabelle1)

Besser:
SQL:
SELECT t2.* FROM tabelle2 AS t2
LEFT JOIN (tabelle1 AS t1) ON (t2.id = t1.aid)
WHERE t2.id IS NULL;
 
Naiv und unperformant:
SQL:
SELECT * FROM tabelle2 WHERE id NOT IN (SELECT aid FROM tabelle1)

Besser:
SQL:
SELECT t2.* FROM tabelle2 AS t2
LEFT JOIN (tabelle1 AS t1) ON (t2.id = t1.aid)
WHERE t2.id IS NULL;

Super Danke das funktioniert schon gut!
Jetzt müsste ich die Abfrage noch etwas erweitern.

SQL:
SELECT * FROM backlink WHERE  linkart = 'avz' AND avzid NOT IN (SELECT id FROM avz)

linkart kann verschieden wörter bekommen.
Die Abfrage funktioniert aber nicht so? Wo habe ich da noch den Fehler?
 
Super Danke das funktioniert schon gut!
Jetzt müsste ich die Abfrage noch etwas erweitern.

SQL:
SELECT * FROM backlink WHERE  linkart = 'avz' AND avzid NOT IN (SELECT id FROM avz)

linkart kann verschieden wörter bekommen.
Die Abfrage funktioniert aber nicht so? Wo habe ich da noch den Fehler?

OH mein Fehler. Hatte noch einen Denkfehler !
Funktioniert jetzt! Danke
 

Neue Beiträge

Zurück