shitzovran
Goto Top

Access tabelle nach mehreren Kriterien sortieren

Klingt einfach ist es aber nicht... Die Tabelle/ Abfrage soll nämlich besonders sortiert werden.

400  | ABC  | 1
350  | ABC  | 2
270  | ABC  | 3
330  | DEF  | 1
320  | DEF  | 2
45   | DEF  | 3
217  | GHI  | 1
12   | GHI  | 2

Zur Erklärung:

Ich möchte Wissen, ob es eine Möglichkeit gibt, dass eine Tabelle/Abfrage so ´sortiert wird, dass zB in Spalte1 erst nach der Größten Zahl gesucht wird.

Nanach soll nach Spalte2 sortiert werden, unabhängig ob in Spalte1 noch größere Zahlen vorhanden sind. Danach wie nächste Große noch unsortierte Zahl.

ich hoffe es ist verständlich

Content-ID: 151613

Url: https://administrator.de/contentid/151613

Ausgedruckt am: 24.11.2024 um 18:11 Uhr

Biber
Biber 23.09.2010 um 11:38:43 Uhr
Goto Top
Moin ShitzOvran,

so, wie du das erwünschte Ergebnis darstellst , ist die gewünsche Sortierung doch nicht "Spalte1, dann Spalte2, dann Spalte3".
Sondern "Spalte2, dann Spalte1, dann Spalte3".

Dann mach das doch einfach mit " SELECT ....ORDER BY 2, 1, 3"

[Edit]
Bzw., da die erste Spalte ja absteigend sortiert werden soll mit
" SELECT ....ORDER BY Spalte2, Spalte1 DESC, Spalte3 " order dem kürzeren " SELECT ....ORDER BY 2, 1 desc, 3"

[/Edit]

Grüße
Biber
TheJoker2305
TheJoker2305 23.09.2010 um 11:48:31 Uhr
Goto Top
In der Abfrage müssen nur in die Felder in der Reihenfolge aufgeführt werden, wie Sie sortiert werden sollen:

Spalte 1 Spalte 2 Spalte 3
absteigende Sortierung absteigende Sortierung absteigende Sortierung


dann werden die Felder der Reihenfolge nach sortiert ....

Wenn das die Anfrage war ... face-smile
ShitzOvran
ShitzOvran 29.09.2010 um 13:43:34 Uhr
Goto Top
ich mach mal ein konreteres beispiel:

ich habe eine Tabelle mit den Spalten

Kunde | VU | Tageszähler


(i) Suche Kunde und
VU mit größtem Tageszähler (z.B. 413 Tage), zeige diesen dann als erstes an. (ii) Liste danach
aber zunächst alle weiteren VUs des oben gefundenen Kunden auf, auch wenn es bei
einem anderen Kunden bzw. VU einen höheren Tageszähler gibt, als bei dem zweiten VU
zum ersten Kunden.
Biber
Biber 29.09.2010 um 19:43:34 Uhr
Goto Top
Moin ShitzOvran,

versuch es so
SELECT b.*  FROM VUs b, 
 (SELECT days, kunde, days*10000 as dummy
  FROM VUs 
   WHERE days &  kunde IN (SELECT max(days) &  kunde FROM Vus GROUP BY Kunde) ) a
 WHERE b.Kunde = a.kunde
ORDER BY a.dummy desc, b.kunde, b.days desc

Anmerkungen
  • ich habe die Tabelle, die ich insgesamt 3x selektiere "VUs" genannt.
  • Die drei Felder heissen bei mir "days" (=dein Tageszähler; Zahl) , "Kunde" (Zeichenfeld) und "VU" (Zahl oder Text... egal)
  • Identifizierende Schlüssel in der Tabelle VUs sind "Kunde, VU"

--> diese Informationen hätten auch von dir kommen können.

Ergebnis bei etwas angepassten Spieldaten aus deinem Eröffnungspost:
deine Spieldaten wären "immer" richtig sortiert und es gibt keine "doppelten" Top-Tageszähler - so kann niemand nichts testen
## Testdaten mit  PK "Kunde, VU" ausgegeben 
Days	Kunde	VU
22	AAA	21
111	AAA	2345
400	ABC	111
350	ABC	222
270	ABC	333
45	DEF	3
330	DEF	221
320	DEF	933
217	GHI	1616
12	GHI	3636
111	ZZZ	1234
###
Ergebnis bzw. Sortierung mit der oben geposteten Abfrage
Days	Kunde	VU
400	ABC	111
350	ABC	222
270	ABC	333
330	DEF	221
320	DEF	933
45	DEF	3
217	GHI	1616
12	GHI	3636
111	AAA	2345
22	AAA	21
111	ZZZ	1234

Grüße
Biber
[Edit] In der 2.Query-Zeile ..SELECT days, kunde, VU, days*10000 as dummy... das unnötige Feld "VU" entfernt [/Edit]
ShitzOvran
ShitzOvran 29.09.2010 um 20:31:44 Uhr
Goto Top
der Hammer, ..danke face-smile hat genau richtig funktioniert
Biber
Biber 29.09.2010 um 21:57:24 Uhr
Goto Top
Moin ShitzOvran,

freut mich.. aber kann es mir nicht verkneifen: mit ein paar Infos mehr hättest du die Antwort schon vor 5 Tagen haben können.. face-wink

Grüße
Biber