Есть таблица статусов loginfo
+-----------------------------------------+
| id| ident | value |
+-----------------------------------------+
| 1 | NOT_ERROR | Без ошибок |
+-----------------------------------------+
| 2 | ERROR_TF | Приемлемая ошибка |
+-----------------------------------------+
| 3 | ERROR_CRITICAL | Критическая ошибка |
+-----------------------------------------+
И есть таблица в которой хранится связь пользователя и ошибки. (урезанная версия таблицы user_error )
+-----------------------+
| user_id | loginfo_id |
+-----------------------+
| 1 | 3 |
+-----------------------+
| 1 | 2 |
+-----------------------+
| 1 | 1 |
+-----------------------+
Необходимо получить следующее
+-----------------------+
| user_id | loginfo_id |
+-----------------------+
| 1 | 1 |
+-----------------------+
| 1 | 2 |
+-----------------------+
| 1 | 3 |
+-----------------------+
Если нет строки с loginfo_id == 1 ,то выводить
+-----------------------+
| user_id | loginfo_id |
+-----------------------+
| 1 | 2 |
+-----------------------+
| 1 | 3 |
+-----------------------+
И если прописывать руками то запрос примерно такой
SELECT
user_error.*
FROM
user_error
LEFT JOIN
loginfo ON user_error.loginfo_id = loginfo.id
ORDER BY FIELD( loginfo.id , 1 , 2 , 3 )
* на память как то так.
Возможно ли сделать , что бы в этой части было что то типа
ORDER BY FIELD( loginfo.id , (SELECT id FOM loginfo ORDER BY FIELD(ident,'NOT_ERROR', ... )) )