Beliebige benutzerdefinierte Abfragen
Beliebige benutzerdefinierte Abfragen
am 21.06.2005 21:07:49 von Armin Braun
Hallo,
ich hab keine so wirklich passende Newsgroup gefunden fürchte ich, aber
ich denke, i.a. passt es schon hierher.
Ich arbeite an einer Datenbank mit einem webbasierten Frontend
(PostgreSQL, Apache, PHP).
Nun ist es von Seiten des Kunden gewünscht, dass völlig beliebige
Abfragen vom Benutzer zusammengestellt und dann die entsprechenden
Listen generiert werden sollen (quasi wie bei Access).
Es geht im Prinzip darum, dass man nicht nur irgendwelche Tabellen
auswählt, aus denen dann gelesen wird, sondern entsprechende
einschränkende Bedingungen definiert werden sollen, die im Kopf des
Benutzers entstanden sind. Beispiel:
"Suche mir alle Personen, die im Zeitraum von 01.03.2004-31.06.2005 in
Projekt X gearbeitet haben, mit entspr. Vertrag und Vergütungsgruppe,
und von diesen wiederum nur die, deren Nachname mit 'A' anfängt, das
ganze alphabetisch sortiert."
Diese in Prosa formulierte Abfrage soll per Web-Formulare und PHP also
in ein SQL-Statement umgeformt werden.
Ich bezweifle, dass so etwas wirklich in vollem Umfang möglich ist, bzw.
denke ich dass es extrem komplex und zeitaufwendig wird.
Mich würde nur interessieren, ob jemand schonmal so etwas ähnliches
durchgeführt hat oder ob es irgendwo Beispiele gibt. Ich habe leider
nichts dazu gefunden.
Ach ja: die Alternative von fest vordefinierten Abfragen, die alles
bisher erforderliche abdecken, wurde natürlich bereits von mir nahegelegt :)
Vielen Dank schonmal,
Armin
Re: Beliebige benutzerdefinierte Abfragen
am 21.06.2005 21:27:27 von Till Potinius
Armin Braun schrieb:
> Es geht im Prinzip darum, dass man nicht nur irgendwelche Tabellen
> auswählt, aus denen dann gelesen wird, sondern entsprechende
> einschränkende Bedingungen definiert werden sollen, die im Kopf des
> Benutzers entstanden sind. Beispiel:
> "Suche mir alle Personen, die im Zeitraum von 01.03.2004-31.06.2005 in
> Projekt X gearbeitet haben, mit entspr. Vertrag und Vergütungsgruppe,
> und von diesen wiederum nur die, deren Nachname mit 'A' anfängt, das
> ganze alphabetisch sortiert."
> Diese in Prosa formulierte Abfrage soll per Web-Formulare und PHP also
> in ein SQL-Statement umgeformt werden.
> Ich bezweifle, dass so etwas wirklich in vollem Umfang möglich ist, bzw.
> denke ich dass es extrem komplex und zeitaufwendig wird.
Jain, eigentlich recht einfach. Zumindest OpenOffice bietet ähnliches
bei der bedingten Formatierung als Menüführung.
Ansatz dazu:
1. Der User kann mit Checkboxen auswählen, was er alles angezeigt
haben will an Spalten.
Bei deinem Beispiel also
[ ]Vorname
[X]Nachname
[X]Vertrag
[X]Vergütungsgruppe
[ ]Einstellungsdatum
....
Dann wählt er mit mehreren Dropdown-Boxen und Textfeldern die
Bedingung. Also
Feldname: Nachname
[Zur Auswahl, muss halt überlegen, was nötig ist]
ist größer $Textfeld
ist kleiner $Textfeld
ist gleich $Textfeld
beginnt mit(bzw. Wildcards einsetzen)
....
Dabei noch die Möglichkeit, die Bedingungen mit AND oder ODER zu
verknüpfen.(Vielleicht auch nur AND, je nach Zielgruppe kann es sonst
zu kompliziert werden. Dann gibt es sonderbare Ergebnisse und der
Admin kriegt die Schuld.)
als letztes noch:
Wieder Dropdown-Box, Sortieren nach: ... Aufsteigend|Absteigend
Anzeige von xx Datensätzen pro Seite.
Das einzige Problem ist eigentlich, dass du die Textfelder richtig
umwandelst in Variablen, die Vergleiche kann SQL ja alle, auch mit
Datum, Text etc.
Dann einfach Stück für Stück die Abfrage zusammensetzen und ausgeben.
Natürlich gibt es Einschränkungen, da man nicht jede noch so komplexe
Abfrage so eingeben kann, aber das meiste sollte sich darüber abdecken
lassen.
MFG; Till Potinius
--
Spieglein, Spieglein an der Wand
Wer ist der Schönste hier im Land?
Ich kann es wohl nicht sein
Wie könnt ich sonst ich selbst noch sein? (Eric Fish)
Re: Beliebige benutzerdefinierte Abfragen
am 22.06.2005 00:55:02 von Armin Braun
Till Potinius wrote:
> 1. Der User kann mit Checkboxen auswählen, was er alles angezeigt
> haben will an Spalten.
>
> Bei deinem Beispiel also
>
> [ ]Vorname
> [X]Nachname
> [X]Vertrag
> [X]Vergütungsgruppe
> [ ]Einstellungsdatum
> ...
jep, das hab ich auch schon demo-weise implementiert.
> Dann wählt er mit mehreren Dropdown-Boxen und Textfeldern die
> Bedingung. Also
>
> Feldname: Nachname
> [Zur Auswahl, muss halt überlegen, was nötig ist]
> ist größer $Textfeld
> ist kleiner $Textfeld
> ist gleich $Textfeld
> beginnt mit(bzw. Wildcards einsetzen)
> ...
schon, das Problem ist halt, dass sich die "selbst erdachten" Anfragen
auf x verschiedene Tabellen beziehen können, und es nicht ganz trivial
ist, automatisiert zwischen denen die richtigen Joins zu erzeugen.
> Dabei noch die Möglichkeit, die Bedingungen mit AND oder ODER zu
> verknüpfen.(Vielleicht auch nur AND, je nach Zielgruppe kann es sonst
> zu kompliziert werden. Dann gibt es sonderbare Ergebnisse und der
> Admin kriegt die Schuld.)
das sowieso :)
> als letztes noch:
> Wieder Dropdown-Box, Sortieren nach: ... Aufsteigend|Absteigend
> Anzeige von xx Datensätzen pro Seite.
>
> Das einzige Problem ist eigentlich, dass du die Textfelder richtig
> umwandelst in Variablen, die Vergleiche kann SQL ja alle, auch mit
> Datum, Text etc.
ja, das ist nicht das Problem. Mit PHP und Postgres kann man das recht
gut umsetzen.
> Dann einfach Stück für Stück die Abfrage zusammensetzen und ausgeben.
>
> Natürlich gibt es Einschränkungen, da man nicht jede noch so komplexe
> Abfrage so eingeben kann, aber das meiste sollte sich darüber abdecken
> lassen.
ich denke auch, dass da irgendwo Grenzen sind, und leider wird sich wohl
auch der Einsatz von Javascript nicht vermeiden lassen, wobei der dann
ausnahmsweise sinnvoll ist. Beispiel: Auswahl einer bestimmten (oder
mehrerer) Tabelle(n) und daraufhin angestossene Auswahl genau derer
Spalten, die in dieser Tabelle enthalten sind.
Wie gesagt, prinzipiell ist es wohl schon möglich, aber Joins über x
verschiedene Tabellen "flexibel" zu realisieren wird wohl nicht einfach.
Ich hoffe nach wie vor, dass die Alternative "fest vorgegebene Abfragen,
bei denen ausschliesslich noch die gewünschten Spalten gewählt werden
können" zufriedenstellend sein wird.
Danke und ciao,
Armin
Re: Beliebige benutzerdefinierte Abfragen
am 22.06.2005 06:32:20 von Till Potinius
Armin Braun schrieb:
> schon, das Problem ist halt, dass sich die "selbst erdachten" Anfragen
> auf x verschiedene Tabellen beziehen können, und es nicht ganz trivial
> ist, automatisiert zwischen denen die richtigen Joins zu erzeugen.
Achso, mehrere Tabellen sollen gleichzeitig verwendet und abgefragt
werden. Ja, mit Join wird es deutlich komplizierter, da kenne ich mich
auch nicht so aus.
MFG; Till Potinius
--
Spieglein, Spieglein an der Wand
Wer ist der Schönste hier im Land?
Ich kann es wohl nicht sein
Wie könnt ich sonst ich selbst noch sein? (Eric Fish)