Vinzenz Mai: Abfrage über 2 Tabellen, die nur Nichtübereinstimmungen liefert

Beitrag lesen

Hallo Siechfred,

SELECT

LiteraturID AS Id
  LiteraturBeschreibung AS Beschreibung
FROM
  Literatur AS t1
WHERE
  t1.Id NOT IN (SELECT LiteraturID FROM Archiv)


> Syntaktische Fehler bitte ich nachzusehen und durch Berufenere zu korrigieren, aber prinzipiell müsste es so funktionieren.  
  
~~~sql
SELECT  
    LiteraturID AS Id,       -- Beachte: Spalten werden durch Komma getrennt  
    LiteraturBeschreibung AS Beschreibung  
FROM Literatur l             -- MySQL unterstützt hier auch AS, aber nicht jedes  
                             -- DBMS, daher lasse ich grundsätzlich AS weg :-)  
WHERE  
    l.LiteraturID NOT IN (   -- Beachte: Auf Spalten-Aliasnamen kann in WHERE-  
                             --          und ORDER-BY-Klausel nicht zugegriffen werden  
        SELECT  
            a.LiteraturID  
        FROM archiv a  
)

Bei dieser speziellen Abfrage wären Tabellen-Aliasnamen nicht erforderlich gewesen. Und nochmals der Hinweis: Subselects werden ab MySQL 4.1 von MySQL unterstützt.
Welche Lösung das DBMS weniger belastet, kann man mit EXPLAIN ermitteln.

Berufene Grüße

Vinzenz