Vinzenz Mai: Subquery eigentlich unkorreliert, MySQL meint aber korreliert

Beitrag lesen

Hallo Ilja,

Ich möchte sämtliche Produkte haben mit Ausnahme von solchen, die in ganz bestimmten Listen enthalten sind. Die IDs dieser speziellen Listen habe ich, sagen wir mal 1, 2 und 3.

  

> SELECT p.id_products  
> FROM products p  
> WHERE 0 = (SELECT COUNT(*)  
>            FROM prods_lists pl  
>            WHERE pl.id_lists IN (1,2,3)  
>            AND pl.id_products = p.id_products  
>           )  
> ;  
>   
> alternativ  
>   
> SELECT p.id_products  
> FROM products p  
> WHERE NOT EXISTS (SELECT pl.id_lists  
>                   FROM prods_lists pl  
>                   WHERE pl.id_lists IN (1,2,3)  
>                   AND pl.id_products = p.id_products  
>                   )  

oder so :-)
Ich bin voreingenommen, ich finde meinen Vorschlag verständlicher; "intuitiver" möchte ich im Zusammenhang mit SQL lieber nicht gebrauchen.

Freundliche Grüße

Vinzenz