これらのクエリをテストするために、Microsoft Access の SQL クエリ ウィザードで実行しています。優先度の高いステータス アラート (O および P) を上部に表示するために、既存の php ファイルを変更しようとしています。これらのアラートは、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
私の同僚は、union all コマンドを使用することを提案しました。その結果、次のようになりました。
注:「<code>WHERE DELETED AND NO VIEW はクエリに残してはなりません。データベースの出力では重要です」。また、データベース自体を変更することはできません。
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
私もこのコードを試しました:
SELECT *
FROM tblOpsLog
WHERE Deleted = No AND Noview = No AND status IN ('A', 'I', 'R', 'O', 'P')
ORDER BY CASE WHEN status IN ('O', 'P') then 1
ELSE 2
END, opslogid DESC
これは私にこのエラーを与えました:
Syntax error (missing oeprator) in query expression 'CASE WHEN status IN ('O','P') then 1 ELSE 2 End'.
目的の出力を表示するためにコードに何を修正/追加するかを誰かが提案できれば、本当に感謝していますか? ありがとうございました