Ich habe es nun so gelöst, leider sortiert er nicht nach a.ENDE. Warum sortiert er nicht nach diesem Datumswert?
$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)
";
als Antwort auf: [#298763]