xound Geschrieben 20. April 2006 Teilen Geschrieben 20. April 2006 Hallo Forum, ich entwickle eine Ajax-Anwendung, die Daten aus einer Datenbank zunächst in XML formatiert und dann ausgibt. Nun bin ich an einer Funktion angekommen, bei der ich mir etwas Arbeit sparen möchte. Deswegen suche ich nach einer Möglichkeit die Ausgabe einer Select-Abfrage zeilenweise zu sortieren, um das ganze dann korrekt sortiert sequentiell, also nach der richtigen Reihenfolge in die XML-Datei zu schreiben. Also, die Select-Abfrage sieht z.B. so aus: SELECT Properties.activity_id, Properties.property_name FROM Properties WHERE (((Properties.property_name)="What" Or (Properties.property_name)="Where" Or (Properties.property_name)="Who")); Die Ausgabe, die erfolgt, ist unsortiert, d.h. die Tupel stehen willkürlich in der Datenbank. Zuerst What, Where, Who, dann Who, Where, What ... und so weiter .. Sieht also so aus: activity_id property_name 1086 What 1086 Where 1086 Who 1087 Who 1087 Where 1087 What 1088 Where 1088 What 1088 Who 1089 What 1089 Who 1089 Where 1090 What 1090 Where 1090 Who Ich möchte es aber gemäß der Reihenfolge der SELECT-Abfrage so haben: activity_id property_name 1086 What 1086 Where 1086 Who 1087 What 1087 Where 1087 Who 1088 What 1088 Where 1088 Who 1089 What 1089 Where 1089 Who 1090 What 1090 Where 1090 Who Dabei ist die Reihenfolge der einzelnen WHERE-Bedingungen in der SELECT-Abfrage wichtig! Hat jemand eine Idee, wie man eine Ausgabe zeilenweise abhängig von den WHERE-Bedingungen sortieren kann??? Danke! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lordy Geschrieben 20. April 2006 Teilen Geschrieben 20. April 2006 Vielleicht überblicke ich das nicht ganz, aber was spricht dagegen, die SQL-Anweisung um "order by Properties.property_name" zu erweitern ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
johnhaltonx Geschrieben 20. April 2006 Teilen Geschrieben 20. April 2006 dann kämen alle "What" zuerst oder ? order by Properties.activity_id asc, Properties.property_name asc sollte erst nach Nummer und dann den Namen alphabetisch aufsteigend sortieren Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 20. April 2006 Teilen Geschrieben 20. April 2006 Na die Sortierung erfolgt ja erst nach deine ID und dann nach dem Namen, wenn du die Order By Klausel so schreibst wie sie da steht. Denn es wird erst nach ID sortiert und dann nach dem Namen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
xound Geschrieben 20. April 2006 Autor Teilen Geschrieben 20. April 2006 Hi Jungs, danke erstmal. Der Westentliche Punkt ist, dass exakt anhand der Reihenfolge der Bedingungen in der WHERE-Klausel sortiert werden soll. Also kommt "Who" in der Klausel zuerst, steht Who auch in Zeile 1 Kommt "What" in der Klausel als nächstes, steht What in Zeile 2 Kommt "Where" in der Klausel an 3. Stelle, kommt Where in Zeile 3 und so weiter... Das wird wahrscheinlich gar nicht so gehen, ich muss, glaube ich, die ganze Tabelle einzeln aufdröseln und dann wieder einsortieren... Oder? jemand noch ne Idee? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 20. April 2006 Teilen Geschrieben 20. April 2006 Ich verstehe nicht wieso du in der WHERE Klausel sortieren willst. Wenn das überhaupt geht? Für die Sortierung gibt es doch ORDER BY da gibst du die Spalten an nach der sortiert werden soll. Wenn du mehrere Spalten angibst wird erst nach der ersten dann nach der zweiten sortiert. Also wenn du beim ersten mehrmals die gleiche ID hast dann wird eben das zweite Sortierkriterium her genommen und danach sortiert. Sollte ich da was fasch verstanden haben kannst du mich gern berichtigen. Vielleicht wäre ja auch ein minimal Dump deiner DB nicht schlecht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
xound Geschrieben 21. April 2006 Autor Teilen Geschrieben 21. April 2006 Ich verstehe nicht wieso du in der WHERE Klausel sortieren willst. Wenn das überhaupt geht? Für die Sortierung gibt es doch ORDER BY da gibst du die Spalten an nach der sortiert werden soll. Wenn du mehrere Spalten angibst wird erst nach der ersten dann nach der zweiten sortiert. Also wenn du beim ersten mehrmals die gleiche ID hast dann wird eben das zweite Sortierkriterium her genommen und danach sortiert. Sollte ich da was fasch verstanden haben kannst du mich gern berichtigen. Vielleicht wäre ja auch ein minimal Dump deiner DB nicht schlecht. Ein minimaler Dump der DB befindet sich bereits oben im ersten Beitrag. Ich will nicht IN der Where-Klausel sortieren, sondern ANHAND der Where-Klausel ... ist das schwer zu verstehen? Es ist aber die optimale Lösung für mein Problem, da ich einen Baum aufspanne, der gemäß der Benutzereingaben entlang gelaufen wird. An jedem Knoten wird ein Element eines SQL-Befehls hinzugefügt. Die GUI ist ebenso analog zu dem Baum aufgebaut. Die GUI-Ausgabe ist eine exakte Abbildung der SQL-Ergebnisse, eben auch in der Reihenfolge. Und diese Reihenfolge ist nahezu immer falsch, da Sie nicht der Benutzereingabe entspricht. Darum muss gemäß der Benutzereingabe umsortiert werden. Ich glaube aber das SQL so etwas nicht kann, leider nicht intelligent genug... Deswegen mach ichs jetzt per "Hand"... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jasper Geschrieben 23. April 2006 Teilen Geschrieben 23. April 2006 Ich glaube aber das SQL so etwas nicht kann, leider nicht intelligent genug... sql als sprachkonstrukt ist per definition nicht intelligent, ebensowenig wie php, java oder fortran. unter oracle kann man das problem mit CASE lösen: per CASE wird anhand des proprtynamens eine virtuelle spalte generiert, anhand der sortiert werden kann. SELECT Properties.activity_id, Properties.property_name, case Properties.property_name when "What" then 0 when "Where" then 1 when "Who" then 2 else 99 end sort_col FROM Properties WHERE (((Properties.property_name)="What" Or (Properties.property_name)="Where" Or (Properties.property_name)="Who")) order by sort_col alles ungetestet, syntaxfehler nicht ausgeschlossen. -j Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.