Zum Inhalt springen

Reihenfolge der Ausgabezeilen bei Select-Abfrage


xound

Empfohlene Beiträge

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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