Moin!
es geht aber darum, eine universelle klasse zu schreiben, die beliebige selects annimmt, selber kombiniert und daraus _ein_ sql-statement macht. dieses wird auf funktionsaufruf zur datenbank geschickt.
Ich denke, dieser Wunsch wird sich nicht erfüllen lassen.
Das Ergebnis einer Datenbankabfrage ist immer _eine_ Tabelle mit sovielen Spalten, wie im SELECT angegeben, und sovielen Zeilen, wie Ergebnisse auf die WHERE-Bedingung (in Kombination mit evtl. GROUP BY) passen.
Wenn du jetzt beliebige SELECTs annehmen willst, um daraus EIN SELECT zu machen, warum machst du als Mensch nicht aus diesen beliebigen SELECTs gleich direkt eines? Würde es einen Mechanismus geben, der beliebige SELECTs zu einem zusammenfaßt, könnte man ja mit einer einzigen Datenbankabfrage sozusagen alles machen, was man jemals wollte - sozusagen das gesamte Wissen der Menschheit mit einem einzigen SELECT abfragen.
Und was universelle Klassen angeht: Die halte ich dann für reichlich sinnlos, wenn sie lediglich die bekannten Abfragefunktionen der Datenbank kapseln. mysql_query() in eine Klasse zu verpacken ist ziemlich sinnlos - da sollte die Klasse schon wesentlich mehr zu leisten imstande sein. Wenn sie aber mehr leistet, dann ist sie nicht mehr so universell. Ich bin sehr dafür, nicht in allen Lebenslagen immer universell benutzbaren Code zu schreiben - das macht die Aufgabe nämlich meist unnötig komplex, weil auch Fälle zu beachten sind, die für die aktuelle Anwendung gar nicht nötig wären - sondern lieber exakt auf das Problem angepaßten Code. Das produziert in der Regel weniger Codezeilen, die Ausführung ist dadurch schneller, und auch die Programmierung geht fixer.
es ist also notwendig, dass die 'ergebnis-tabellen' einzeln zugreifbar sind.
Du wirst zwingend einzelne SELECTs an die DB schicken müssen und erhälst im Gegenzug wunderbar einzelne Resultsets.
- Sven Rautenberg