Tag
Ich versuche eine SQL abfrage zu schreiben die ein teil aufsteigend und ein andern teil absteigend sortiert :( Aber irgendwie ignoriert er die Order By ... einer ne idee warum ?
(SELECT id, `end` AS datey, 'E' FROM union_dev WHERE `end` > NOW() ORDER BY datey ASC)
UNION
(SELECT
CASE
WHEN `str` > `prs` THEN id
WHEN `str` < `prs` THEN id
WHEN `str` IS NULL AND `prs` IS NULL THEN id
END,
CASE
WHEN `str` > `prs` THEN `str`
WHEN `str` < `prs` THEN `prs`
WHEN `str` IS NULL AND `prs` IS NULL THEN '0000-00-00'
END AS datey,
CASE
WHEN `str` > `prs` THEN 'S'
WHEN `str` < `prs` THEN 'P'
WHEN `str` IS NULL AND `prs` IS NULL THEN 'N'
END
FROM union_dev
WHERE `end` < NOW() OR `end` IS NULL
ORDER BY datey DESC);
eigentlich soll das rauskommen ...
+----+------------+---+
| id | datey | E |
+----+------------+---+
| a | 2007-07-28 | E |
| c | 2007-09-30 | E |
| b | 2007-10-20 | E |
| e | 2007-12-01 | S |
| d | 2007-10-19 | P |
| f | 2007-04-19 | P |
| g | 2007-02-01 | S |
| i | 0000-00-00 | N |
| h | 0000-00-00 | N |
+----+------------+---+
alle mit e sollen aufsteigend nach datey sortiert werden und alle andern absteigend
aber er sortiert nur nach ID :( dann kommt das raus
+----+------------+---+
| id | datey | E |
+----+------------+---+
| a | 2007-07-28 | E |
| b | 2007-10-20 | E |
| c | 2007-09-30 | E |
| d | 2007-10-19 | P |
| e | 2007-12-01 | S |
| f | 2007-04-19 | P |
| g | 2007-02-01 | S |
| h | 0000-00-00 | N |
| i | 0000-00-00 | N |
+----+------------+---+