Matze: MySQL - komplexer SELECT COUNT mit Subquery

Beitrag lesen

Hallo NG,

ich habe einen relativ komplexen SQL-Select. Kurz zur Struktur:

Ich habe eine Tabelle (form1) mit einer Subtabelle (f1_sub_from). In der Tabelle form1 ist jeweils die ID der Sätze aus f1_sub_form enthalten, bzw. auch direkt auswertbare Daten.

Ich habe nachstehenden SQL-Befehl verbrochen :-):
SELECT count(*) as ANZAHL FROM form1 INNER JOIN f1_sub_form ON (form1.F1_WERT033 = f1_sub_form.F1SUB_ID
and f1sub_wert NOT IN ('3', '8', '9', '10', '12', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56'))
WHERE (form1.F1_WERT056 = truncate('1',0) AND (truncate('6',0) < (SELECT COUNT(*) As ANZAHL2 from form1, f1_sub_form WHERE F1_WERT119 = f1sub_id AND f1sub_wert <> truncate('60',0))))
AND form1.F1_KEY1 = '6054061' AND F1_MODUL = '16/1'

Der INNER Join gibt die Anzahl der Sätze zurück, die für F1_WERT033 zutreffen können. Da maximal 9 Sätze für F1_WERT033 vorhanden sein können, teste ich dann ob ANZAHL = 9 ist. Der Part F1_WERT056 = truncate('1',0) ist unkritisch.
Das Problem ist der letzte Teil. In F1_WERT119 können maximal 6 Subsätze eingetragen werden. Ich muss nun zusätzlich prüfen ob ein Wert '60' eingetragen ist.
Nur finde ich keine Möglichkeit das SQL nur ansatzsweise darauf reagiert.
Hat jemand eine Idee oder einen besseren Lösungsansatz. Ich kann leider nicht mit Union arbeiten, da ich als Ergebnis einen Satz mit einer Zahl weiter arbeiten muss.

Danke im voraus.
Grüsse Matze