SQL Sortierproblem bei mehreren Sortierungen

  • Moin,


    bin seit Tagen an einen Problem dran was eigentlich recht einfach sein müsste.


    Ich habe eine Datenbank - Tabelle mit Gesetzen, Gesetze haben immer Paragraphen, die sortiert werden wollen wenn das Gesetzbuch angezeigt werden soll.


    Sortiert werden sollen die Paragraphen so: §1, §1a, §2, §2a, §2b, §3, §4, §5, §6, §7, §8, §9, §10, §11 etc. (Ja, manche Gesetze haben Buchstaben am Ende des Paragraphen)


    Ich habe derzeit diese SQL-Abfrage;

    SQL
    SELECT * FROM `laws` WHERE `Law` = 'StGB' AND `Paragraph` IS NOT NULL ORDER BY cast(Paragraph as unsigned) ASC

    -> Das funktioniert auch, aber nur wenn am Ende des Paragraphen kein Buchstabe ist, sonst wird bspw. §1a am Ende angezeigt.


    Ohne den cast würden die Paragraphen falsch sortiert werden: §1, §1a, §10, §11, §12 etc.


    Wie kann ich es sortieren lassen, das es korrekt angezeigt wird?


    http://sqlfiddle.com/#!9/91ea4a/1 habe ich auch schon versucht, da ich es so möchte wie seq dort sortiert wird, funktioniert leider nicht.


    Irgendetwas mache ich falsch oder habe ich vergessen. Vielleicht habt ihr eine Idee.


    Vielen Dank schon mal!

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • palwal

    Hat den Titel des Themas von „SQL Sotierproblem bei mehreren Sotierungen“ zu „SQL Sortierproblem bei mehreren Sortierungen“ geändert.
    • Hilfreich

    Ich vermute (kenne deine Struktur ja nicht) das du Paragraf als VARCHAR abgespeichert hast. Danach willst du aber Zahlen sortieren (die Paragrafennummern).

    Das kannst du ganz einfach mit deinem cast oder mit 'VARCHAR + 0' erreichen. Dazu muss allerdings noch das '$' zeichen entfernt werden. Dies kannst du einfach mit '' REPLACEN.


    Somit würde ich dir folgendes Vorschlagen:

    SELECT * FROM `laws` WHERE `Law` = 'StGB' AND `Paragraph` IS NOT NULL ORDER BY (REPLACE(`Paragraph`, '§', '') + 0) ASC


    So bin ich zu folgendem Ergebnis gekommen:

    pasted-from-clipboard.png


    Falls deine Struktur doch anders aufgebaut ist, schreib sie gern nochmal hier rein.