WinFuture-Forum.de: MySQL Abfrage Wert von ORDER ausschließen? - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

MySQL Abfrage Wert von ORDER ausschließen?


#1 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.221
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 19. März 2017 - 15:53

Ich habe da ein kleines Problem. Kann man einen Wert von der ORDER-Klausel ausschließen? Das Problem ist Folgendes. Ich habe in einem Datensatz die Werte (Beispiel): 1,2,3,0,0,0,0,0,3,3,0,2

Wenn ich die Spalte nun sortiere, bekomme ich je nach ASC oder DESC

0 0 0 0 0 0 1 2 2 3 3 3

bzw.

3 3 3 2 2 1 0 0 0 0 0 0

Ich müßte aber nach ASC sortieren, nur mit den Nullen am Ende. Die müßten also zunächst von der Sortierung ausgeschlossen, dann aber drangehängt werden, also:

1 2 2 3 3 3 0 0 0 0 0 0

Ich könnte zwei Abfragen machen, also erst alle Datensätze ohne 0 , dann alle Datensätze nur mit 0 und dann hintereinander anzeigen, was aber vergleichsweise umständlich wäre, wenn das per Query ginge.

Dieser Beitrag wurde von Holger_N bearbeitet: 19. März 2017 - 16:11

Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

Anzeige



#2 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.221
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 19. März 2017 - 16:43

Ich glaube ich habs gefunden (immer wenn ich nach 2 Tagen Suche hier frage, finde ich es kurze Zeit später):

ORDER BY CASE WHEN spalte != '0' THEN 0 ELSE 1 END , spalte ASC


scheint zu klappen.
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#3 Mitglied ist offline   RalphS 

  • Gruppe: aktive Mitglieder
  • Beiträge: 8.887
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 19. März 2017 - 16:52

Jup, genau so. Oder ggf in abgewandelter Form, aber, die Idee ist, daß Du der ORDER BY Klausel sagen mußt was unter welchen Bedingungen wohin sortiert werden soll. Anfang und Ende ist immer noch relativ einfach. Analog für NULLs könnte man mit ORDER BY IFNULL(spalte), spalte ran.

Mt SQL gehen recht putzige Dinge, weil an viele - nicht alle, aber viele --- Stellen laut Standard "Ausdrücke" geschrieben werden können, und das sind halt nicht nur Zahlen oder Zeichenfolgen, sondern auch Funktionen und Unterabfragen.
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#4 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.221
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 19. März 2017 - 17:11

Ja ich staune auch immer wie das so alles geht, weil das ja auch eigentlich drei verJOINTe Tabellen sind. Hab mir die hier immer wieder beschriebenen Optimierungen zu Herzen genommen und drei Tabellen gemacht, wo ich früher alles in eine geschrieben hätte. Eine Tabelle ist ne Liste mit Namen, eine mit Lehrgangsterminen und dann nochmal eine Tabelle, wo ich nur über die IDs der beiden anderen Tabellen, die Personen den Lehrgängen zugeordnet habe. Da werden die Abfragen zwar etwas komplexer aber wie das trotzdem alles kreuz und quer zu verwurschteln geh, ist keine schlechte Sache.

…und gerade GROUP_CONCAT() entdeckt und diesmal auch zu dem Zeitpunkt, wo ich es gebracht habe. Schon fast peinlich, was ich früher für umständliche Abfrageschleifen zusammengeschustert habe und das geht alles mit einem Query.

Dieser Beitrag wurde von Holger_N bearbeitet: 22. März 2017 - 21:40

Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0