2016-06-23 9 views
1

Ich musste eine SQL-Abfrage für eine gegebene Datenbank schreiben (es ist riesig, ich kann es hier nicht posten, aber es geht um Künstler mit Alben und Veröffentlichungsdaten, Genres usw.)).(SQL) Erstellen einer unkorrelierten Abfrage

Die Aufgabe war es, alle an Alben beteiligten Künstler zu finden, die das Wort "drop" enthalten. Ich musste eine korrelierte und eine unkorrelierte Abfrage schreiben. Ich habe die korrelierte:

SELECT artist 
FROM CDDB.ARTISTS ar 
WHERE EXISTS 
    (SELECT album 
    FROM CDDB.ALBUMS al 
    INNER JOIN CDDB.ARTIST2ALBUM aa ON al.albumid = aa.albumid 
    WHERE ar.artistid = aa.artistid 
     AND album LIKE '\%drop\%'); 

Jetzt muss ich das unkorreliert machen, aber ich weiß nicht wie. Ist es möglich, dass man mir ohne die angegebenen Tabellen usw. helfen kann?

+1

"Ist es möglich, dass man mir ohne die angegebenen Tabellen usw. helfen kann?" Vielleicht, aber es ist viel wahrscheinlicher, dass jemand Ihnen mit der Tabellenstruktur und den Beispieldaten helfen könnte – Ghost

+0

nichtsdestoweniger ist es vorhersehbar :) – MysticForce

Antwort

0

Unkorrelierte Unterabfragen sind Unterabfragen, die unabhängig von der äußeren Abfrage ausgeführt werden können.

Im Allgemeinen ist EXISTS korreliert, IN ist unkorreliert.

Wenn Sie Ihre Anfrage an etwas ändern wie:

SELECT artist 
FROM CDDB.ARTISTS ar 
INNER JOIN CDDB.ARTIST2ALBUM aa ON ar.artistid = aa.artistid 
WHERE album in 
    (SELECT album 
    FROM CDDB.ALBUMS 
    WHERE album LIKE '%drop%'); 

Es ist jetzt unkorreliert.

Verwandte Themen