Moin Tim,
ich bin eben von einer Tücke bei der Angabe von SQL Filtern in den Wahnsinn getrieben worden und wollte hiermit kurz die Kollegen "warnen".
Ich wollte einen generellen Vorfilter bauen, der einen Teil der Datensätze erst gar nicht zur Ausgabe bringt und habe dann am Lister-Element die folgende SQL-Bedingung hinterlegt:
Dieser Vorfilter funktioniert auch soweit und die Einträge mit Ablaufdatum werden nicht ausgegeben. Wenn ich jetzt nun aber weitere Filter, z.B. aus einem Filtermodul einsetzen, dann scheint es so, als würde das dann nicht mehr funktionieren, weil trotzdem alle Datensätze angezeigt werden ...
Ursache ist, dass in der Abfrage oben die letzte Bedingung ein OR ist ... In Kombination mit weiteren Abfragen - die dann später an die Kette gehängt werden - wird das natürlich dann das gewünschte Ergebnis verfälschen.
Lösung ist, die obige Abfrage in Klammern () zu setzen und dann ist alles gut. Logisch.
Evtl. könntest Du die Beschreibung hier am Filter etwas umschreiben und darauf hinweisen, dass kombinierte Abfragen ggf. in Klammern zu setzen sind, damit sie für sich durchgeführt werden können?
ich bin eben von einer Tücke bei der Angabe von SQL Filtern in den Wahnsinn getrieben worden und wollte hiermit kurz die Kollegen "warnen".
Ich wollte einen generellen Vorfilter bauen, der einen Teil der Datensätze erst gar nicht zur Ausgabe bringt und habe dann am Lister-Element die folgende SQL-Bedingung hinterlegt:
HTML-Code:
expiry_date > UNIX_TIMESTAMP() OR expiry_date = 0
Ursache ist, dass in der Abfrage oben die letzte Bedingung ein OR ist ... In Kombination mit weiteren Abfragen - die dann später an die Kette gehängt werden - wird das natürlich dann das gewünschte Ergebnis verfälschen.
Lösung ist, die obige Abfrage in Klammern () zu setzen und dann ist alles gut. Logisch.
Evtl. könntest Du die Beschreibung hier am Filter etwas umschreiben und darauf hinweisen, dass kombinierte Abfragen ggf. in Klammern zu setzen sind, damit sie für sich durchgeführt werden können?
Kommentar