Ilja: SQL: Kann man diese Anfrage simpler gestalten

Beitrag lesen

yo,

Mh, dann dürfte ich im zweiten SELECT nur noch die Datensatz-Gruppierungen betrachten, in denen _alle_ Datensätze den Wert "nicht selbst gerippt" in "ripped" haben.

dafür musst du halt zwei bedingungen beachten. zum einen musst du nur die datensätze einschließen, die kein selbst gerippt im jeweiligen Titel haben. und dann musst du dich für einen ripped wert entscheiden. ich weiß aber nicht welchen du willst und so nehmen ich einfach einen mit MAX().

SELECT tab1.id, tab1.title, tab1.ripped
FROM discs AS tab1
WHERE tab1.id IN
   (
   SELECT MAX(tab2.id)
   FROM discs AS tab2
   GROUP BY tab2.titel
   )
AND 0 =
   (
   SELECT COUNT(*)
   FROM discs AS tab3
   WHERE tab3.ripped = "self ripped"
   AND tab3.titel = tab1.titel
   )

eine andere möglichkeit wären Operatoren der Mengenlehre wie INTERCEPT oder andere. aber ich weiß nicht, ob dein dbms so etwas unterstützt.

Ilja