php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.01.2012, 15:44  
Benutzer
 
Registriert seit: 27.08.2010
Beiträge: 32
PHP-Kenntnisse:
Anfänger
Madenar76 befindet sich auf einem aufstrebenden Ast
Standard Probleme bei Sortierung

Hallo @all,

ich habe ein Problem und und weiss wirklich nicht wie ich es lösen könnte und hoffe dabei auf eure Hilfe.

Ich habe eine Tabelle mit 3 Spalten, die nach drei Faktoren sortiert werden soll.
z.B.:

Spalte 1 Spalte 2 Spalte 3
3 6 3
4 3 2
4 2 2
3 1 9
4 6 3

Zunächst soll nach spalte 1 Sortiert werden, also nach 3 oder 4, dann nach Spalte 2 und zu guter letzt soll Spalte 3 gruppiert werden. Das Ergebniss sollte also wie folgt aussehen:

Spalte 1 Spalte 2 Spalte 3
3 1 9
3 6 3
4 5 2
4 7 2
4 6 3

Das heisst wenn Spalte 1 eine 4 ist muss zunächst Spalte 3 sortiert werden. Mein Problem ist das wenn er Spalte 3 sortiert mir die sortierung in Spalte 2 verloren geht. Kann mit bitte jemand bei der MySql Abfrage helfen bzw. sagen nach was ich im Internet suchen muss.

MFG

Madenar
Madenar76 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.01.2012, 16:01  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

das geht nicht - du kannst nicht 2 variable Sortier-Reihenfolgen angeben
Code:
order by spalte1 ASC,spalte2 ASC, spalte3 ASC
warum sollte davon genau dann abgewichen werden, wenn in der ersten Spalte 'ne 4 steht ?
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 24.01.2012, 16:05  
Erfahrener Benutzer
 
Registriert seit: 13.01.2012
Beiträge: 256
PHP-Kenntnisse:
Anfänger
akretschmer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Madenar76 Beitrag anzeigen
Hallo @all,

ich habe ein Problem und und weiss wirklich nicht wie ich es lösen könnte und hoffe dabei auf eure Hilfe.

Ich habe eine Tabelle mit 3 Spalten, die nach drei Faktoren sortiert werden soll.
z.B.:

Spalte 1 Spalte 2 Spalte 3
3 6 3
4 3 2
4 2 2
3 1 9
4 6 3

Zunächst soll nach spalte 1 Sortiert werden, also nach 3 oder 4, dann nach Spalte 2 und zu guter letzt soll Spalte 3 gruppiert werden. Das Ergebniss sollte also wie folgt aussehen:

Spalte 1 Spalte 2 Spalte 3
3 1 9
3 6 3
4 5 2
4 7 2
4 6 3

Das heisst wenn Spalte 1 eine 4 ist muss zunächst Spalte 3 sortiert werden. Mein Problem ist das wenn er Spalte 3 sortiert mir die sortierung in Spalte 2 verloren geht. Kann mit bitte jemand bei der MySql Abfrage helfen bzw. sagen nach was ich im Internet suchen muss.

MFG

Madenar
Dein Ergebniss passt nicht zur Ursprungstabelle.

Was genau hast Du denn bisher probiert?

Code:
test=# select i1, i2, i3 from madenar order by i1, i2, i3;
 i1 | i2 | i3
----+----+----
  3 |  1 |  9
  3 |  6 |  3
  4 |  2 |  2
  4 |  3 |  2
  4 |  6 |  3
(5 rows)
Andreas
akretschmer ist offline   Mit Zitat antworten
Alt 24.01.2012, 16:07  
Benutzer
 
Registriert seit: 27.08.2010
Beiträge: 32
PHP-Kenntnisse:
Anfänger
Madenar76 befindet sich auf einem aufstrebenden Ast
Standard

Dank zunächst für die Antwort.

Wenn in Spalte 1 die 3 der Wert ist muss nach Spalte 2 sortiert werden, Spalte 3 interessiert nicht ob diese sortiert ist. Wenn in Spalte 1 der Wert 4 ist muss nach Spalte 3 sortiert werden und dann erst nach Spalte 2.

Sorry, aber ich kann es leider nicht besser ausdrücken was ich meine
Madenar76 ist offline   Mit Zitat antworten
Alt 24.01.2012, 16:10  
Erfahrener Benutzer
 
Registriert seit: 13.01.2012
Beiträge: 256
PHP-Kenntnisse:
Anfänger
akretschmer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von eagle275 Beitrag anzeigen
das geht nicht - du kannst nicht 2 variable Sortier-Reihenfolgen angeben
Code:
order by spalte1 ASC,spalte2 ASC, spalte3 ASC
warum sollte davon genau dann abgewichen werden, wenn in der ersten Spalte 'ne 4 steht ?
Doch, das geht schon:

Code:
test=# select i1, i2, i3 from madenar order by case when i1 = 3 then (i1,i2,i3) else (i3,i1,i2) end;
 i1 | i2 | i3
----+----+----
  4 |  2 |  2
  4 |  3 |  2
  3 |  1 |  9
  4 |  6 |  3
  3 |  6 |  3
(5 rows)
Andreas
akretschmer ist offline   Mit Zitat antworten
Alt 24.01.2012, 16:11  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Ich glaube zwar auch nicht daran dass das sinnvoll ist aber bitte:

Code:
ORDER BY Spalte1, IF(Spalte1=3, Spalte3, NULL), Spalte2
fab ist offline   Mit Zitat antworten
Alt 24.01.2012, 16:13  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

und dann steht in spalte1 5 drin und es knallt ^^
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 24.01.2012, 16:24  
Benutzer
 
Registriert seit: 27.08.2010
Beiträge: 32
PHP-Kenntnisse:
Anfänger
Madenar76 befindet sich auf einem aufstrebenden Ast
Standard

es kann in spalte 1 nur der wert 3 oder 4 stehen,
Madenar76 ist offline   Mit Zitat antworten
Alt 24.01.2012, 16:25  
Benutzer
 
Registriert seit: 27.08.2010
Beiträge: 32
PHP-Kenntnisse:
Anfänger
Madenar76 befindet sich auf einem aufstrebenden Ast
Standard

@fab, also bedeutet das wenn spalte 1 den Wert 3 hat wird zuerst nach Spalte 3 sortiert?
Madenar76 ist offline   Mit Zitat antworten
Alt 24.01.2012, 16:30  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Richtig, und falls nicht, nach NULL, was keine Änderung bewirkt. IF ist hier nämlich eine Funktion und es wird nach dem jeweiligen Rückgabewert dieser Funktion für jeden Datensatz sortiert.

Siehe auch: MySQL Doku zu IF()
fab ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit mehrfacher Sortierung masterof Datenbanken 10 05.05.2011 18:15
Probleme mit Word Lollix Off-Topic Diskussionen 2 26.03.2010 11:52
CHarset und Probleme mit IE KeKs0r HTML, Usability und Barrierefreiheit 10 26.01.2010 21:59
[Erledigt] fopen() Probleme jN^ PHP Tipps 2009 2 18.08.2009 12:31
Sortierung nach bestimmten Variablen "Status", Priorität" usw. Tyrra PHP Tipps 2009 13 28.07.2009 13:32
[Erledigt] Inhalt mehrdimesionales array nach Sortierung ausgeben supervision PHP Tipps 2009 7 26.05.2009 21:08
sortierung brian johnson Datenbanken 6 05.05.2008 19:53
Probleme bei Speicherung von serialize() Strings Manni2k PHP Tipps 2006 13 15.10.2006 15:06
Probleme mit mbstring extension unter Debian HStev Server, Hosting und Workstations 3 30.08.2006 20:55
Probleme mit Rechteverteilung chmod() per script!!!??? Funky_ PHP Tipps 2006 7 17.06.2006 17:10
[Erledigt] CSV Größe macht Probleme mit php PHP Tipps 2005 5 15.03.2005 21:29
Zwei Rechner ins Netz - Router - Hub - Probleme... imported_Ben Off-Topic Diskussionen 37 13.01.2005 21:36
[Erledigt] Technische Probleme mit Sessions PHP-Fortgeschrittene 4 18.11.2004 14:45
[Erledigt] Probleme mit Fremdsprachen HTML, Usability und Barrierefreiheit 2 21.09.2004 17:11
PHP Bilder in DB / Probleme bei Änderung PHP-Fortgeschrittene 1 05.06.2004 11:20


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:45 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum