Announcement

Collapse
No announcement yet.

Mysql Abfrage mit eigener Funktion im Order By

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mysql Abfrage mit eigener Funktion im Order By

    Hallo,

    ich möchte eine Abfrage erzeugen, die an jedem Tage eine andere Sortierung erzeugt, meine Idee dazu - ich benutze eine SPLIT_STR Funktion (siehe weiter unten) um den Spaltennamen festzulegen.

    SELECT *
    FROM meine_tabelle
    ORDER BY SPLIT_STR(
    "dd|tdstamp|csrdate|rdc_email|rdc_preis|rfc_plz|rf c_username|rfc_password", '|', dayofweek( now( ) )
    ) ASC

    Leider erfolgt keine Sortierung, es gibt aber auch keine Fehlermeldung :-(

    Die Split_str Funktion an sich tut, ein
    select SPLIT_STR(
    "dd|tdstamp|csrdate|rdc_email|rdc_preis|rfc_plz|rf c_username|rfc_password", '|', dayofweek( now( ) )
    ) gibt eine richtige Antwort

    Hat jemand eine Idee bzw. einen anderen Lösungsansatz??

    ==Funktion==
    CREATE FUNCTION SPLIT_STR(
    x VARCHAR(255),
    delim VARCHAR(12),
    pos INT
    )
    RETURNS VARCHAR(255)
    RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
    LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
    delim, '')

  • #2
    Das kann auch gar nicht funktionieren, schliesslich gibst du kein Objektbezeichner für das ORDER BY an sondern ein String.

    http://dev.mysql.com/doc/refman/5.0/en/select.html
    In ORDER BY kannst du die Felder anhand ihrer Position ansprechen.

    oder du ermittelst das Feld per
    http://dev.mysql.com/doc/refman/5.0/...l#function_elt

    Edit:
    Code:
    ORDER BY RAND(CURDATE())
    wäre auch noch eine Möglichkeit
    Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

    Comment


    • #3
      Hallo dibo33,

      vielen Dank, das mit ORDER BY RAND(CURDATE()) war genau die Lösung!

      Vielen Dank, ich hab wohl viel zu kompliziert gedacht ;-)

      Comment

      Working...
      X