Artikel sortieren

Hallo!

Kann man z.B. folgende Liste mit SQL so sortieren das zuerst der bestimmte Artikel 20 steht und danach erst 19 und 23 kommen. Zusätzlich sollte alles noch nach dem Datum sortiert werden das z.B. erst der Wert (20, 2014-09-06) kommt und danach erst (20, 2014-08-20).
Also das zuerst Sachen mit den letzten Datum kommen.

[table=“width: 500”]

**Artikel**
**Datum**


20
2014-09-06


19
2014-09-01


20
2014-08-20


23
2014-08-19

[/table]

So sollte die Tabelle dann aussehen:
Ich kenne bisher nur das man es nach bestimmten Kriterien sortieren kann, aber nicht das man welche (Artikel 20) hervorheben kann. Aber vielleicht ist es ja möglich.
Bekommt man sowas mit MySQL hin?

[table=“width: 500”]

**Artikel**
**Datum**


**20**
2014-09-06


    **20**
2014-08-20	


19
2014-09-01


23
2014-08-19

[/table]

Das Sortierkriterium ist etwas unpräzise beschrieben. Wenn du beispielsweise nach dem Abstand zur 20 sortieren möchtest, ginge das z. B. so:
[sql]SELECT Artikel, Datum FROM mytable ORDER BY ABS(20-Artikel), Datum[/sql]

Ein
[sql]ORDER BY Artikel ASC, Datum ASC[/sql]
reicht doch vollkommen aus, neben ASC (Aufsteigend sortieren) gibt es auch DESC (absteigend sortieren).

Was meinst du mit “Hervorheben”?
Dies sollte Softwareseitig geschehen, entweder du Limitierst dann, dass du ausschliesslich bestimmte IDs sehen möchtest oder eben nicht.

Ein hervorheben der Daten im den Sinne ist ohnehin nicht möglich, MySQL ist Storage und keine Benutzeroberfläche die der Endnutzer sieht.

Ja danke das klappt nur ein kleines Problem wäre da noch…
MySQL sortiert jetzt nur den bestimmten Artikel 20 nach datum, aber nicht auch die Werte dadrunter.

Also ich möchte das die Artikel (19/23) auch nach dem Datum sortierbar sind. Denn ich habe später noch mehrere Artikel nicht nur 19 und 23…
Nur wie mache ich das?

@Bizarrus das Beispiel von **cmrudolph ** klappt doch also ist deine Aussage das man keine Daten in MySql hervorheben kann leider falsch… Klar kann man die Liste mit Java für sich zu recht stücken nur ist das in meinem Fall viel aufwändiger als wenn mir MySQL die Daten schon perfekt liefert…

Back To The Topic

Ja danke das klappt nur ein kleines Problem wäre da noch…
MySQL sortiert jetzt nur den bestimmten Artikel 20 nach datum, aber nicht auch die Werte dadrunter.

Also ich möchte das die Artikel (19/23) auch nach dem Datum sortierbar sind. Denn ich habe später noch mehrere Artikel nicht nur 19 und 23…
Nur wie mache ich das?

Du hast das Sortierkriterium nicht klar definiert. Ich kann immer noch nur raten, was du möchtest.
Wenn du den Eintrag mit der Artikelnummer 20 nach vorne ziehen und nach Datum sortieren möchtest und alle anderen Einträge danach unabhängig von der Artikelnummer nach Datum sortieren möchtest, dann ginge das so:
[sql]SELECT Artikel, Datum FROM mytable WHERE Artikel = 20 ORDER BY Datum UNION SELECT Artikel, Datum FROM mytable WHERE Artikel != 20 ORDER BY Datum[/sql]

Aber wie gesagt, du solltest noch einmal genau beschreiben, was du möchtest…

somethingwine2, du hast anscheinend nicht das Prinzip einer Datenbank verstanden. Was wir denn **wo **visuell hervorhegoben?
Rein gar nichts.

Aber du kannst es auch selbst testen - Arbeite über MySQL mal in der Command-Line/Shell.

Dass was da „hervorgehoben“ wird ist Clientseitig, dass was der Nutzer sieht. Softwareseitig. In MySQL kannst du nichts „hervorheben“ du kannst ledeglich Datensätze anzeigen und sortieren, nenn mir ein exaktes Beispiel wo über ein SQL Query ein Datensatz visuell hervorgehoben wird.

Boah vielen vielen Dank klappt nun hoffentlich endlich wie ich es mir gewünscht habe :slight_smile: - Musste nur noch alles in meinem Projekt umsetzen, da dieses ein wenig komplexer als das Beispiel mit den Artikeln ist.

Und zum Glück hast du jedesmal alles richtig interpretiert :smiley: Noch mal Danke :slight_smile:

@Bizarrus für mich ist das schon hervorgehoben wenn der Artikel 20 ganz oben steht und die anderen sortiert nach dem datum dadrunter stehen, aber wenn du „hervorheben“ anders interpretierst dann tut es mir leid das ich mich so schlecht ausgedrückt habe - aber die hauptsache ist ja das es jetzt funktioniert :slight_smile:

Genau, wie du schon sagst, ist dies eine Sortierung nicht etwa ein “Hervorheben”. Ein hervorheben wäre, wenn bestimmte Datensätze gegenüber den anderen in Irgendeiner Form “hervorgehoben” weden - Wie z.B. Farblich.

Dass die Lösung mit dem UNION nicht sonderlich schön ist, ist dir aber hoffentlich bewusst. Die Datenbank muss dafür zwei komplette Queries absetzen.
Ich würde das “hervorheben” bzw. hochholen der Treffer wahrscheinlich eher im Client machen als die Query zu duplizieren.