Contao-Camp 2024
Ergebnis 1 bis 6 von 6

Thema: MySQL - Frage zu Sortierung

  1. #1
    Contao-Fan
    Registriert seit
    03.01.2012.
    Beiträge
    809

    Standard MySQL - Frage zu Sortierung

    Hallo,

    ich habe mehrere Datensätze, die Modellbezeichnungen enthalten die aus Buchstaben UND Nummern bestehen, wie z.B.

    S 25 B
    L 20 F
    L 25 B
    L 120 F

    Nun möchte ich daraus folgende Sortierung erhalten:

    L 20 F
    L 25 B
    L 120 F
    S 25 B

    Das bedeutet, es soll zuerst alphabetisch sortiert werden. Danach soll aufsteigend nach den Zahlen sortiert werden. Das Problem ist: wenn ich varchar verwende, wird L 120 F VOR dem L 20 F ausgegeben. Da 120 aber größer als 20 ist, soll es natürlich nicht so sein.

    Wie realisiere ich diese Sortierung und mit welchem Spaltentypen?

    Danke im Voraus.

  2. #2
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.466
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Deine gewünschte Sortierreihenfolge kannst du mit keinem Sortieralgorithmus erreichen, weil du Datentypen mischt.
    Das was du willst ist noch nicht mal natural Sorting, weil dann wäre "L 120 F" vor "L 20 F".

    Am einfachsten ist es wohl, wenn du die Modellbezeichnung in 3 Spalten aufteilst und dann sortierst.
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  3. #3
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935

    Standard

    Zitat Zitat von dazzle89 Beitrag anzeigen
    Wie realisiere ich diese Sortierung und mit welchem Spaltentypen?
    Indem Du die Informationen (als z.B. Typ 'L' oder 'S' und Größe '120',' '20', ...) in eigenen Spalten vorhältst.

    Vielleicht ginge auch der Zugriff mittels SUBSTRING(string, start, length), also in etwa so etwas:

    Code:
    ORDER BY SUBSTRING(spalte, 0, 1), SUBSTRING(spalte, 1, 3)
    -- oder
    ORDER BY SUBSTRING(spalte, 0, 1), SUBSTRING(spalte, 1)
    aber hier siehst Du schon, daß die unterscheidlichen Längen der Zahlenangaben ein Problem bereiten.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  4. #4
    Contao-Fan
    Registriert seit
    03.01.2012.
    Beiträge
    809

    Standard

    Danke für die Antworten, ich werde mich damit mal genauer beschäftigen.

  5. #5
    Contao-Fan Avatar von Fehrmann
    Registriert seit
    04.07.2009.
    Ort
    Wismar
    Beiträge
    580
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Falls möglich kannst du die Zahlen ja auch auf eine bestimmte Länge mit führenden Nullen auffüllen. Gegebenenfalls bei den Ausgaben dann wieder entfernen. Vielleicht funktioniert es so mit nur 1 Spalte.
    Software-Entwickler Backend/Frontend

  6. #6
    Contao-Fan
    Registriert seit
    03.01.2012.
    Beiträge
    809

    Standard

    Ich habe es nun einfach mit 3 Spalten gelöst und scheint wunderbar zu klappen. Danke für die Vorschläge.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •