Michael Schröpl: (MySQL)(PHP) Problem(chen) bei Select-Abfrage

Beitrag lesen

Lässt sich denn innerhalb der Where-Klausel auch eine Funktion aufrufen, die wohl geeigneterweise
True zurückgibt und dementsprechend werden die Sätze selektiert.

In SQL alleine nicht.

Bestimmte Datenbanken erlauben es, sogenannte "stored procedures" in der Datenbank selbst dauerhaft abzulegen. Diese sind dann für die SQL-Engine ansprechbar, genau wie interne Funktionen, etwa max(spalte) usw.
Es kommt aber auf die Datenbank an, ob so etwas geht und in welcher Sprache diese Funktionen dann geschrieben werden müssen.
(z. B. Oracle kann es und hat dafür eine eigene algorithmische Sprache PL/SQL, die sich vage wie PASCAL liest, aber selbst u. a. auch wieder SQL-Anweisungen verwenden kann.)

Zur Zeit, als so eine Art Problemumgehung, lese ich alle Sätze (ohne Where) und laufe dann nochmal
durch eine do-while-Schleife durch, um die Überprüfungen zu machen. NIcht ideal, oder ?

In der Tat. Du denkst bei Deiner Problemlösung bisher streng algorithmisch (3GL). Das aber "beißt" sich mit dem Konzept von SQL, welches lösungs- (4GL) und mengenorientiert denkt.

Versuche, die Menge der zu verarbeitenden Einträge wirklich nur als Menge zu sehen und ihre Eigenschaften zu beschreiben; überlasse es der Datenbank, diese Menge irgendwie zu berechnen, statt selbst irgendwas sequentiell abarbeiten zu wollen.

Der Umfang Deiner Funktionen innerhalb der WHERE-Klausel sollte nicht das Problem sein - es muß Dir nur gelingen, sie aus Sprachmitteln von SQL zu formulieren, also ohne Schleifen und Abfragen, alleine durch einen Ausdruck - eventell auch aufgrund des Ergebnisses von SubQueries, falls Deiner Datenbank "richtiges SQL" kann.