Webentwicklung in Münster

MySQL: Sortierung nach eigener Reihenfolge

Um die Post-Flaute der letzten Tage zu unterbrechen, hier ein kurzer MySQL-Tipp:

Es kommt ab und an vor, dass man das Ergebnis eines Querys sortieren möchte, die standard Sortierfunktionen dafür aber nicht geeignet sind. An dieser Stelle kann man bei Strings auf einen Workaround per “LOCATE” zurückgreifen, was dann aussieht wie folgt:

SELECT
    *
FROM
    `fruechte`
ORDER BY
    LOCATE(`sorte`, "birne apfel kiwi")

In diesem Beispiel würde die Tabelle “fruechte” komplett, nach der im “LOCATE” bestimmten Reihenfolge, ausgegeben werden. Als erstes die Birnen, dann die Äpfel und zuletzt die Kiwis.

Die Funktion “LOCATE” gibt die Position von `sorte` in dem definierten String zurück. Der kleinste, also vorderste Begriff steht damit oben.

Ein Kommentar zu diesem Beitrag

  1. Klaus schreibt:

    Interessanter Ansatz! Mit deinem Beispiel bin ich aber nicht vollständig einverstanden, die Menge von Früchten als String zu verwalten birgt neben Redundanzen auch andere Probleme, z.B. folgendes:

    SELECT
    *
    FROM
    `fruechte`
    WHERE
    ‘frucht’ = ‘apfel’
    ORDER BY
    LOCATE(`sorte`, "birne bratapfel kiwi apfel paradiesapfel")

Verfasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen:
<a href="" title=""> <blockquote cite=""> <cite> <code> <em> <strong>

Kontakt

Ich freue mich über Anfragen und Ideen

auf dem Postweg

Felix Geenen
Langemarckstraße 59
48147 Münster

am Telefon

0151 / 11 50 14 27

oder per E-Mail

webentwicklung[at]felix-geenen[punkt]de

Aktuell

Die neuesten Beiträge aus dem Blog

28. Januar 2011 in Allgemein

Relaunch 2011

7. Dezember 2010 in Datenbanken

MySQL: Sortierung nach eigener Reihenfolge

27. Oktober 2010 in Allgemein

Syntax-Highlighting in OpenOffice

25. Oktober 2010 in php

"Und" mal anders..

18. Oktober 2010 in Allgemein

Fifa 99 – Höhere Auflösung und Patches