Writerim
@Writerim
Заполнить позже...

Возможно ли сделать ORDER BY FIELD из вложенного запроса?

Есть таблица статусов 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', ... )) )
  • Вопрос задан
  • 2310 просмотров
Решения вопроса 1
создается впечатление, что запрос составлен не корректно.
каким образом вы хотите отсортировать выборку?
field('abc', 'cde', 'qwe', 'abc', 'asd') - вернет индекс совпавшей строки, т.е. в данном случае 3
сортировать-то можно, но зачем?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ollisso
Вопрос не понятен.

В ваш запрос :
Order by loginfo.id

Если не по id надо, то легче всего добавить столбик orderid и делать order by orderid
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы