Nach mehreren Kriterien sortieren
Daniel
- datenbank
Hallo!
Ich hab mal wieder ein _kleines_ Datenbankproblem: Ich möchte gerne einen ausgelesenen Datensatz(Mysql) nach mehreren Kriterien sortieren. Laut Mysql Handbuch geht das so:
SELECT ordersatz,artikelnr_intern,ueberschrift,anzahl_lagernd FROM artikel ORDER BY ordersatz,artikelnr_intern,anzahl_lagernd ASC
...nun wird zwar nach "anzahl_lagernd" Aufsteigend sortiert, nach den anderen beiden jedoch standardmässig Absteigend sortiert, da sich das ASC ja nur auf das unmittelbar davorstehende Feld bezieht
Folgender Versuch geht auch nicht so wie ich es will:
SELECT ordersatz,artikelnr_intern,ueberschrift,anzahl_lagernd FROM artikel ORDER BY ordersatz ASC,artikelnr_intern ASC,anzahl_lagernd ASC
bewirkt genau das gleiche wie die 1. Abfrage
Weiss jemand vielleicht wie man das dann richtig schreiben muss damit alle Aufsteigend (ASC) sortiert werden?
Danke,
Daniel
Hallo!
SELECT ordersatz,artikelnr_intern,ueberschrift,anzahl_lagernd FROM artikel ORDER BY ordersatz,artikelnr_intern,anzahl_lagernd ASC
...nun wird zwar nach "anzahl_lagernd" Aufsteigend sortiert, nach den anderen beiden jedoch standardmässig Absteigend sortiert, da sich das ASC ja nur auf das unmittelbar davorstehende Feld bezieht
Nein, standardmäßig wird aufsteigend sortiert.
Folgender Versuch geht auch nicht so wie ich es will:
SELECT ordersatz,artikelnr_intern,ueberschrift,anzahl_lagernd FROM artikel ORDER BY ordersatz ASC,artikelnr_intern ASC,anzahl_lagernd ASC
bewirkt genau das gleiche wie die 1. Abfrage
Ja, klar, weil ASC eben Standard ist ;-))
Aufsteigend heißt vom Kleinsten zum Größten also:
1
2
3
4
bzw:
a
b
c
d
Andersrum wäre absteigend, also DESC.
Du weißt aber schon, dass die Datensätze durch die Sortierung nicht "auseinandergerissen" werden? Dein Statement sortiert die _Datensätze_ hauptsächlich nach ordersatz (aufsteigend, also vom Kleinsten zum Größten). Bei identischen Werten im Feld ordersatz, werden _diese_ Datensätze nach artikelnr_intern sortiert und _nur_ für Datensätze, die identische Werte in den Feldern ordersatz _und_ artikelnr_intern haben, greift die Sortierung nach anzahl_lagernd.
viele Grüße
Axel
SELECT ordersatz,artikelnr_intern,ueberschrift,anzahl_lagernd FROM artikel ORDER BY ordersatz,artikelnr_intern,anzahl_lagernd ASC
...nun wird zwar nach "anzahl_lagernd" Aufsteigend sortiert, nach den anderen beiden jedoch standardmässig Absteigend sortiert, da sich das ASC ja nur auf das unmittelbar davorstehende Feld bezieht
Nein, standardmäßig wird aufsteigend sortiert.
Ja genau. sorry habe mich vertan :)
Folgender Versuch geht auch nicht so wie ich es will:
SELECT ordersatz,artikelnr_intern,ueberschrift,anzahl_lagernd FROM artikel ORDER BY ordersatz ASC,artikelnr_intern ASC,anzahl_lagernd ASC
bewirkt genau das gleiche wie die 1. Abfrage
Ja, klar, weil ASC eben Standard ist ;-))
Du weißt aber schon, dass die Datensätze durch die Sortierung nicht "auseinandergerissen" werden? Dein Statement sortiert die _Datensätze_ hauptsächlich nach ordersatz (aufsteigend, also vom Kleinsten zum Größten). Bei identischen Werten im Feld ordersatz, werden _diese_ Datensätze nach artikelnr_intern sortiert und _nur_ für Datensätze, die identische Werte in den Feldern ordersatz _und_ artikelnr_intern haben, greift die Sortierung nach anzahl_lagernd.
Also ich habe da nocheinmal getestet, eigentlich sortiert Mysql überhaupt nur die 1. Spalte :
Pos a-nr o-satz name lagernd
1 0 0 testartikel 0
2 0 1967 testartikel 8
3 10000 1967 testartikel 8
4 10000 1967 testartikel 8
5 10000 1967 testartikel 8
6 10000 1967 testartikel 8
7 10000 1967 testartikel 8
8 10000 1967 testartikel 8
9 10008 1967 testartikel 8
10 10010 1967 testartikel 8
11 10011 1967 sdad 15
12 10012 1967 sdad 4
13 10013 1967 sdad 4
14 10014 1967 sdad 4
15 10015 1967 sdad 4
16 10016 1057 21 1
17 10017 1967 1 11111111
18 10018 1967 1 11111111
19 10019 1967 1 11111111
20 10020 1967 1 11111111
21 10021 1967 1 11111111
22 10022 1967 1 11111111
23 10023 1967 1 11111111
24 10024 1967 1 11111111
25 10025 1057 efd 256
26 10026 1057 efd 256
27 10027 1057 Vanady-200stk. 8
Verstehe ich nicht wieso
mfg,
Daniel
hi,
Also ich habe da nocheinmal getestet, eigentlich sortiert Mysql überhaupt nur die 1. Spalte : [...]
sag mal, bist du _sicher_, dass du die sortierkriterien jetzt in der "richtigen" reihenfolge angegeben hast?
das ergebnis, das du gepostet hast, sieht danach aus, als ob artikelnr_intern (a-nr in der ausgabe) das erste sortierkriterium waere, und nicht ordersatz, wie du sagtest ...
gruss,
wahsaga
hi wahsaga
sag mal, bist du _sicher_, dass du die sortierkriterien jetzt in der "richtigen" reihenfolge angegeben hast?
das ergebnis, das du gepostet hast, sieht danach aus, als ob artikelnr_intern (a-nr in der ausgabe) das erste sortierkriterium waere, und nicht ordersatz, wie du sagtest ...
Ja die Sortierabfrage war etwas anders, aber das Grundprinzip bleibt ja im Endeffekt dasselbe, nämlich, dass die Sekundär und Tertiär-Suchreihenfolge nicht so ist wie ich es gerne haben will :(
Gruss,
Daniel