Datenbank nach Name und ID sortieren


#1

Hallo,

ich habe eine kleine Datenbank für Logins, die ungefähr diese Schemata hat:

| ID (PK) |   Name  | User_ID |      Timestamp       |
|    1    | foo bar | 1213215 | 01.02.2003; 12-13-14 |
|    2    | bar foo | 1634513 | 02.03.2004; 13-14-15 |
|    3    | far boo | 1213215 | 03.02.2005; 16-15-14 |
|    4    | foo boo | 1346031 | 04.01.2006; 24-23-22 |

Die ID ist eindeutig, User_ID kann mehrfach vorkommen, Name ist nicht an User_ID gebunden. Ich wollte mir die Datenbank nun nach dem Namen und der User-ID sortieren, damit die Datenbank so angezeigt wird:

| ID (PK) |   Name  | User_ID |      Timestamp       |
|    2    | bar foo | 1634513 | 02.03.2004; 13-14-15 |
|    3    | far boo | 1213215 | 03.02.2005; 16-15-14 |
|    1    | foo bar | 1213215 | 01.02.2003; 12-13-14 |
|    4    | foo boo | 1346031 | 04.01.2006; 24-23-22 |

Ich habe schon probiert, erst nach dem Namen und dann nach der User-ID (und andersherum) zu sortieren

SELECT * FROM `tbl` ORDER BY `Name` ASC, `User_ID` ASC

genau so wie ich es fälschlicherweise mit GROUP BY versucht habe

SELECT * FROM `tbl` GROUP BY `User_ID` ORDER BY `Name` ASC

Ich denke, da müsste zuerst nach der User_ID und anschließend erneut nach dem Namen sortiert werden, nur wüsste ich nicht, wie das gehen sollte. Habe es schon mit verschachtelten Anfragen probiert, komme hier aber nicht aus dem Fehlerzustand raus.

Wäre für Tipps dankbar.

LG, DMan


#2

Der welcher wäre? Dein erstes SQL-Statement sieht ganz ok aus.


#3

Klar funktionieren o. g. Befehle, sich machen beide halt nicht das, was ich mir vorstelle.

Hab’s u. a. damit probiert, in den ORDER BY-Teil eine weitere Anfrage zu stellen, bspw.

SELECT * FROM `tbl` ORDER BY (SELECT * FROM `tbl` ORDER BY `Name` ASC) ASC

was natürlich vollkommener Unsinn ist.


#4

Was soll denn herauskommen?

SELECT * FROM `tbl` ORDER BY `Name` ASC, `User_ID` ASC

sollte doch dein oben genanntes Beispiel liefern? Wenn nicht, was dann?

Mfg :wink:


#5

So war meine Antwort auch gemeint. Ich habe deine Tabelle nun einmal nachgestellt, um es zu veranschaulichen:

Und dein Statement ergibt genau das von dir als gewünscht angegebene Ergenis:

In deinem Beispiel-Datensatz würde es allerdings auch ausreichen nach Name zu sortieren. Daher habe ich zwei weitere Einträge hinzugefügt, an denen du erkennen kannst, dass es einen Unterschied macht, ob man zuerst nach Name und dann nach User_ID sortiert oder umgekehrt:

Erst Name, dann User_ID:

Erst User_ID, dann Name:

Möglicherweise haben wir dein Problem noch nicht verstanden, oder bei dir ist etwas anderes schief gelaufen.


#6

Hab das hier komplett vergessen… :smiley:

Ich muss das echt noch mal prüfen, entweder ich hab beim Faken der Daten etwas falsch gemacht oder ich bin einfach extrem dämlich. Melde mich später noch einmal.