Benjamin: SQL = ORDER BY wird ignoriert ... warum?

Beitrag lesen

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 |
+----+------------+---+