Hi im trying to order domain data using their status. As you might know, domain status DOM_EXP or DOM_DAKT applies before domain hits DOM_HELD therefore i dont care whitch one of this status has a domain before it became DOM_HELD
How can i order this data? Using select provided below i only achieve that DOM_DAKT is behing DOM_EXP but i want it to be somewhere in between, ordered by exp_date
SELECT domain_id, status, exp_date
FROM domains
ORDER BY
field (status, 'DOM_DEL', 'DOM_HELD', 'DOM_EXP', 'DOM_DAKT'),
exp_date ASC;
+-----------+----------+---------------------+
| domain_id | status | exp_date |
+-----------+----------+---------------------+
| 2 | DOM_DEL | 2012-02-02 10:47:33 |
| 4 | DOM_HELD | 2012-02-02 10:47:38 |
| 5 | DOM_HELD | 2012-02-02 10:47:40 |
| 7 | DOM_HELD | 2012-02-02 10:47:44 |
| 1 | DOM_EXP | 2012-02-02 10:47:27 |
| 3 | DOM_EXP | 2012-02-02 10:47:35 |
| 6 | DOM_EXP | 2012-02-02 10:47:42 |
| 54 | DOM_DAKT | 2012-02-02 10:47:39 |
+-----------+----------+---------------------+
the result have to be like this
+-----------+----------+---------------------+
| domain_id | status | exp_date |
+-----------+----------+---------------------+
| 2 | DOM_DEL | 2012-02-02 10:47:33 |
| 4 | DOM_HELD | 2012-02-02 10:47:38 |
| 5 | DOM_HELD | 2012-02-02 10:47:40 |
| 7 | DOM_HELD | 2012-02-02 10:47:44 |
| 1 | DOM_EXP | 2012-02-02 10:47:27 |
| 3 | DOM_EXP | 2012-02-02 10:47:35 |
| 54 | DOM_DAKT | 2012-02-02 10:47:39 |
| 6 | DOM_EXP | 2012-02-02 10:47:42 |
+-----------+----------+---------------------+
Order first by “rank” of status where
DOM_EXPandDOM_DAKTare considered to be of equal rank. Then order byEXP_DATEwithin each “rank” of statusLook at the
CASEexpression as a mappingstatus=>ordering rank