Sortierung Datumsfelder

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

  • Sortierung Datumsfelder

    Hallo!

    Möchte nach folgenden Werten sortieren, als erstes nach Anmeldeschluss, Start und dann Preis. Dies sind alles Datumswerte. Wenn nun Anmeldeschluss "NULL" bzw. leer ist, dann sortiere nach Start und wenn dieses leer ist nach Preis. Zum Schluss sollen alle Datensätze, die kein Datumswert haben, ans Ende hinzugefügt werden.

    Versuche es mit "IF" im Query, bekmme aber nicht die "leeren" Datensätze ans Ende.


    PHP-Code:
     select a.ID,  
                            
    a.NAME,  
                            if (
    DATE_FORMAT(a.ENDE,'%d.%m.%Y') <> NULL0,1)as `ENDE`,  
                            if (
    DATE_FORMAT(a.START,'%d.%m.%Y') <> NULL0,1)  as `START`,  
                            if (
    DATE_FORMAT(a.PREISVERLEIHUNG,'%d.%m.%Y') <> NULL0,1) as `PREIS`, 
                            if (
    DATE_FORMAT(a.ENDE,'%d.%m.%Y') = NULL0,1) as `LEER`, 
                            
    UNIX_TIMESTAMP(a.ENDE) as `TS_ENDE`, 
                            
    UNIX_TIMESTAMP(a.DATUM) as `TS`,  
                            
    a.KURZTEXT  
                        from 
    `bz` as a, `bzbereich` as ab 
    Erst prüfe ich ob die Werte <> "NULL" sind, wenn das der Fall ist, zeige mir die zuerst. Wie bekomme ich jetzt die restlichen Daten, indenen kein Datumswert vorhanden sind abgefragt?

  • #2
    zum vergleichen mit NULL brauchst du kein format anzugeben.

    Kommentar


    • #3
      Ich habe es nun so gelöst, leider sortiert er nicht nach a.ENDE. Warum sortiert er nicht nach diesem Datumswert?

      PHP-Code:

      $sql 
      "(select 
                              a.ID, 
                              a.PREIS,
                              a.NAME,
                              a.START,
                              DATE_FORMAT(a.ENDE,'%d.%m.%Y') as `ENDE`,
                              UNIX_TIMESTAMP(a.ENDE) as `TS_ENDE`,
                              UNIX_TIMESTAMP(a.DATUM) as `TS`, 
                              a.KURZTEXT 
                          from `bz` as a, `bz_bereich` as ab 
                          WHERE 1
                          AND a.ENDE > NOW()
                          AND ab._ID=a.ID 
                          AND ab.BEREICH_ID="
      .$bereich.
                          AND a.PROBE=0
                          ORDER BY a.ENDE DESC)
                      UNION
                          (select 
                              a.ID, 
                              a.PREIS,
                              a.NAME, 
                              a.START,
                              DATE_FORMAT(a.ENDE,'%d.%m.%Y') as `ENDE`,
                              UNIX_TIMESTAMP(a.ENDE) as `TS_ENDE`,
                              UNIX_TIMESTAMP(a.DATUM) as `TS`, 
                              a.KURZTEXT 
                          from `bz_award` as a, `bz_bereich` as ab 
                          WHERE a.START > NOW()
                          AND ab._ID=a.ID 
                          AND ab.BEREICH_ID="
      .$bereich.
                          AND a.PROBE=0
                          ORDER BY a.START )  
                      UNION
                          (select 
                              a.ID, 
                              a.PREIS,
                              a.NAME, 
                              a.START,
                              DATE_FORMAT(a.ENDE,'%d.%m.%Y') as `ENDE`,
                              UNIX_TIMESTAMP(a.ENDE) as `TS_ENDE`,
                              UNIX_TIMESTAMP(a.DATUM) as `TS`, 
                              a.KURZTEXT 
                          from `bz_award` as a, `bz_bereich` as ab 
                          WHERE a.PREIS > NOW()
                          AND ab._ID=a.ID 
                          AND ab.BEREICH_ID="
      .$bereich.
                          AND a.PROBE=0
                          ORDER BY a.PREIS)  
                      UNION
                          (select 
                              a.ID, 
                              a.PREIS,
                              a.NAME, 
                              a.START,
                              DATE_FORMAT(a.ENDE,'%d.%m.%Y') as `ENDE`,
                              UNIX_TIMESTAMP(a.ENDE) as `TS_ENDE`,
                              UNIX_TIMESTAMP(a.DATUM) as `TS`, 
                              a.KURZTEXT 
                          from `bz_award` as a, `bz_bereich` as ab 
                          WHERE a.ENDE < NOW()
                          AND a.START < NOW() 
                          AND a.PREIS < NOW()
                          AND ab._ID=a.ID 
                          AND ab.BEREICH_ID="
      .$bereich.
                          AND a.PROBE=0
                          ORDER BY a.ENDE) 
                      UNION
                          (select 
                              a.ID, 
                              a.PREIS,
                              a.NAME, 
                              a.START,
                              DATE_FORMAT(a.ENDE,'%d.%m.%Y') as `ENDE`,
                              UNIX_TIMESTAMP(a.ENDE) as `TS_ENDE`,
                              UNIX_TIMESTAMP(a.DATUM) as `TS`, 
                              a.KURZTEXT 
                          from `bz_award` as a, `bz_bereich` as ab 
                          WHERE a.ENDE is NULL
                          AND a.START is NULL 
                          AND a.PREIS is NULL
                          AND ab._ID=a.ID 
                          AND ab.BEREICH_ID="
      .$bereich.
                          AND a.PROBE=0
                          ORDER BY a.ID)                     
                  "

      Kommentar


      • #4
        Vielleicht solltest du dein Problem erstmal eingrenzen?
        D.h. den Union auflösen und gucken ob alle Queries einzeln das zurück liefern was sie sollten?!


        Ich hoffe mal, dass ist kein Query der im Live-Betrieb läuft?! x_X

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar

        Lädt...
        X