Ergebnis 1 bis 6 von 6

Thema: MySQL - Frage zu Sortierung

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

    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.403
    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 Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.

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

    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.
    Stammtisch Contao Bayern: http://www.contao-bayern.de

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

    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
    370

    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.
    aiDESIGNER - www.ai-designer.de, ehemals als Freelancer www.omos.de

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

    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
  •