
Zurückkommend auf Deinen Vorschlag mit einer zusätzlichen Tabelle "Filter", kam mir nach erfolgreicher Suche nach 2 Feldern die Idee, noch mal dieses auf Suche nach 3 Feldern zu steigern. Die Filter-Tabelle zu erweitern, ist ja kein Problem, auch die SQL-Formulierung in der Abfrage war schnell ohne Protest verwirklicht:
SELECT "xxx"."*" FROM "xxx WHERE
( ( LOWER ( "Motiv" ) LIKE '%' || COALESCE ( ( SELECT LOWER ( "SucheMotiv" ) FROM "Filter" WHERE "Filter"."ID" = TRUE ), '' ) || '%' ) OR "Motiv" IS NULL )
AND
( ( LOWER ( "Material" ) LIKE '%' || COALESCE ( ( SELECT LOWER ( "SucheMaterial" ) FROM "Filter" WHERE "Filter"."ID" = TRUE ), '' ) || '%' ) )
AND
( ( LOWER ( "Serie" ) LIKE '%' || COALESCE ( ( SELECT LOWER ( "SucheSerie" ) FROM "Filter" WHERE "Filter"."ID" = TRUE ), '' ) || '%' ) )
ORDER BY "Motiv" ASC, "Serie" ASC
Aber kurioserweise geht die Suche nach 2 Filtereingaben ("SucheMotiv"=Hans , "SucheSerie"=Lieblingsmächen, "SucheMaterial"= (leer) nur scheinbar korrekt, obwohl ich im dritten Filterfeld nichts drin habe! Nach meinem Verständnis hätte ich aber dort etwas eingeben müssen, denn bei den 3 gefundene Datensätzen war das Feld "Material" in keinem Fall leer.
Folglich ist die SQL-Formulierung bezüglich Inhalt (nicht bezüglich der SQL-Form) falsch bzw. unzutreffend.
Mein Wunsch war, dass nur die Datensätze angezeigt werden, bei denen alle drei Suchfelder-Inhalte zutreffend sind.
Danke für Diskussion!
Pit
Gibt es vielleicht irgendeine SQL-Satz-Längenbeschränkung? Oder ist doch ein logischer Fehler in meiner "Suche"?