Чтобы проверить эти запросы, я запускаю их в мастере запросов SQL в Microsoft Access. Я пытаюсь изменить существующий php-файл, чтобы отображать предупреждения о высоком приоритете (O и P) наверху, которые затем упорядочиваются opslogid в порядке убывания. После того, как больше нет предупреждений о статусе O и P, я хочу отображать остальные предупреждения о состоянии (A, I, R), упорядоченные по opslogid в порядке убывания. Это данные выборки и требуемая выходная мощность:Сортировка после объединения Все
tblOpslog
opslogid = 9999, 9998, etc.
status = R, O, I, A, P
opslogid status
9999 P
9996 P
9994 O
9991 O
9998 I
9997 I
9980 A
9979 A
9978 A
9930 R
9928 R
Мой коллега предложил мне использовать объединение всех команд, которые привели меня придумать с этим:
Примечание: «ГДЕ DELETED И NOVIEW ДОЛЖНЫ ОСТАВАТЬСЯ В ЗАКЛЮЧЕНИИ, ЭТО ВИДИТ В ВЫХОДЕ БАЗА ДАННЫХ ». ТАКЖЕ Я НЕ МОГУ СДЕЛАТЬ ЛЮБЫЕ ИЗМЕНЕНИЯ НА БАЗЕ ДАННЫХ.
select * from (SELECT * FROM tblOpslog
Where Deleted = No AND Noview = No AND status in ('O','P'))
union all
select * from (Select * FROM tblOpslog Where Deleted = No AND Noview = No AND status in ('I','R', 'A'))
Order by status, opslogid DESC;
Выход этого:
opslogid status
9980 A
9979 A
9978 A
9998 I
9997 I
9994 O
9991 O
9999 P
9996 P
9930 R
9928 R
Я был бы очень признателен, если кто-то может кто-то посоветует, что исправить/добавить в код, чтобы отобразить желаемый результат? Спасибо
Будет ли получить желаемый выход? С P и O в верхней части страницы с их идентификаторами в порядке убывания, а затем A, I, R после их идентификаторов в порядке убывания? Вы только обратились к P и O в своем заявлении. –
Я обрабатываю A, I, R с помощью 'ELSE 2'. – Barmar
Я добавил что-то к предложению 'WHERE', чтобы получить только 5 статусов. – Barmar