2013-12-08 5 views
0

У меня возникли проблемы о том, как получить состояние готовности, чтобы показать, когда есть множественный статус по этому идентификатору ..MySQL GROUP BY с ORDER BY с использованием конкретных слов

моя база данных:

ProjID | Status 
    1   Ready 
    2   Done 
    1   Ongoing 
    3   Done 
    2   Ongoing 
    1   Done 

Ожидаемого результат:

ProjID | Status 
    1   Ready 
    2   Ongoing 
    3   Done 

когда есть состояние готовности на этом projíd Ready должен появиться, но когда нет состояния готовности постоянного статуса не будет появляться, но когда также не постоянным статусом Done статуса woul d появляются ... заказ готов, Продолжающийся, Готово

Я попробовал этот

SELECT DISTINCT (projectID),Status FROM projStatus 
GROUP BY projectID 
ORDER BY FIELD(Status, 'Ready','Ongoing','Done') 
+0

Этот вопрос отвечает на аналогичную проблему: http://stackoverflow.com/questions/4025675/mysql-order-by-custom-set-field-value – Keeper

+0

Вы сортируете AZ по полю 'Status' – nrathaus

+0

@Keeper У этой проблемы нет отдельной/группы, поскольку ее просто сортировка ... моя проблема в том, что когда я использовал отдельную/групповую функцию, порядок не работает. Я имею в виду, что статус выполнен, но статус готовности должен появляться не так. status для этого id – Criz

ответ

0

Согласно моему комментарию вот вложенный запрос:

SELECT projectID, Status 
FROM (
    SELECT DISTINCT (projectID),Status 
    FROM projStatus 
    GROUP BY projectID 
) AS t 
ORDER BY CASE Status 
      WHEN 'Ready' THEN 1 
      WHEN 'Ongoing' THEN 2 
      WHEN 'Done' THEN 3 
     END