Ankündigung

Einklappen
Keine Ankündigung bisher.

Union und ORDER BY

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Union und ORDER BY

    Hallo,

    ich stehe hier etwas auf dem Schlauch.
    Und zwar m�chte ich 2 Tabellen mit Union auslesen und nach Datum sortieren. Leider bekomm ich die Sortierung falsch angezeigt.

    PHP-Code:
    $currentdate date("Y-m-d H:i:s");

    $result mysql_query("

        (SELECT DAYOFWEEK(beginn) AS wochentag, 

        DATE_FORMAT(beginn, '%d/%m')beginn, 

        TIME_FORMAT(uhrzeit, '%H.%i')uhrzeit,

        id,titel,kurztext,text,url,ort,art,vvk,ak 

        FROM programm WHERE startdate <= '
    $currentdate' AND enddate >= '$currentdate') 

    UNION 

        (SELECT DAYOFWEEK(beginn) AS wochentag, 

        DATE_FORMAT(beginn, '%d/%m')beginn, 

        TIME_FORMAT(uhrzeit, '%H.%i')uhrzeit,

        id,titel,kurztext,text,url,ort,art,vvk,ak 

        FROM wm_veranstaltung WHERE startdate <= '
    $currentdate' AND enddate >= '$currentdate') 

        ORDER BY DATE_FORMAT(beginn, '%Y%m%d') ASC"
    ,$db) OR die (mysql_error());

     while (
    $daten mysql_fetch_array($result)) { 

    echo 
    $daten[beginn];




    Nehme ich Datums formatierung raus wird richtig sortiert
    Und wenn ich nur eine Tabellen Abfrage mache wird auch richtig sortiert.
    Das muss ich jetzt nicht verstehen oder

  • #2
    Ich kann Dir schonmal soviel sagen, dass es sich dabei um keine php Frage handelt und nach "phpfriend.de Foren-Übersicht -> MYSQL" gehört.

    Warum musst Du eigentlich beginn in diese Form umsetzen? Eine normale Sortierung eines Datumtyps ergibt die selbe Reihenfolge und kann zudem aus einem Index bedient werden (sofern vorhanden).
    Zusätzlich kommt beim ORDER BY beginn nicht mehr als Datumswert an, da Du mit
    DATE_FORMAT(beginn, '%d/%m')beginn
    diese Information nach außen zerstörst. Dass man Feldnamen mit alias' überschreiben und damit verbergen kann, nervt mich eh.

    Kommentar


    • #3
      Ja klar ich Depp da habe ich ja gar nicht dran gedacht.
      Habe die SQL Datumsformation komplett entfernt.
      und mit:
      PHP-Code:
      echo substr($daten[beginn], 8,2). "/" .substr($daten[beginn], 5,2); 
      formatiert.
      Danke für deinen Denkanstoss.
      PS. Stimmt das gehörte eigentlich ins MYSQL Forum.

      Kommentar

      Lädt...
      X