Thomas: Schachtelungstiefe von "IN" - oder Optimierung?

Beitrag lesen

Hallo,

ich habe folgendes Problem: Für registrierte Nutzer existiert ein Kriterienkatalog, der 83 Punkte umfasst. Abgelegt sind diese in einer Tabelle mit 2 Spalten: Die NutzerID und jeweils ein Kriterium. D.h., wer alle 83 Punkte erfüllt hat auch 83 Zeilen in der Tabelle (Nein, das Design stammt nicht von mir).

Um jetzt einen Nutzer rauszusuchen, der viele Kriterien erfüllt, nutze ich bisher ein Konstrukt dieser Art:

SELECT questanscode FROM Activity_domains where (refcode = '1.1' and questanscode in ( SELECT questanscode FROM Activity_domains WHERE refcode = '1.2' and questanscode in ( SELECT questanscode FROM Activity_domains WHERE refcode = '1.3' and questanscode in ( SELECT questanscode FROM Activity_domains WHERE refcode = '1.4'))))

Ist natürlich nicht das schönste Teil, aber es war die erste funktionierende Lösung überhaupt. Leider streckt die Access-DB die Waffen, wenn mehr als 50 Kriterien abgefragt werden sollen.

Da ich an der DB nichts ändern kann/darf meine Frage: Hat jemand eine Idee, wie man es besser lösen könnte? Der SQL-String muß lediglich halbwegs vernünftig per PHP-Script erzeugbar sein...

Danke & Gruß

Thomas