Zum Inhalt springen

Reihenfolge der Ausgabezeilen bei Select-Abfrage


Empfohlene Beiträge

Geschrieben

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!

Geschrieben

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

Geschrieben

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.

Geschrieben

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?

Geschrieben

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.

Geschrieben
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"...

Geschrieben
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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...