ユーザーが2種類のテストを完了できるシステムがあります。DISTINCT
最新のテスト完了日でソートされたユーザーのリストを取得する必要があります。
この目的のために、表は次のように設定することもできます。
Test_Users
- Test_User_Id (int)
Test_1_Results
- Test_1_Result_Id (int)
- Test_User_Id (int)
- Date_Of_Completion (datetime)
Test_2_Results
- Test_2_Result_Id (int)
- Test_User_Id (int)
- Date_Of_Completion (datetime)
次のようにTest_User_Id
使用して、すべての異なるのリストを喜んで取得できます。UNION
SELECT Test_User_Id FROM Test_1_Results
UNION
SELECT Test_User_Id FROM Test_2_Results
そして、これらのテーブルの1つからの結果を、を使用して簡単に並べ替えることができましたORDER BY Date_Of_Completion DESC
が、またはを使用してこれを行う方法がわかりませんUNION
。
最終的には、このクエリを次のような他のクエリにラップできるようにしたいと思います。
SELECT *
FROM Test_Users
WHERE Test_User_Id IN (
//The query i am asking about
)
WHERE some_criteria
しかし、これまでのところ、aを使用しているときにこれを行うことがUNION
できず、何が間違っているのかわかりません。
私がこれを行おうとしている理由は、管理者ユーザーがテストを完了したすべての人のリストを表示できる必要があるためです。最後に完了したものが一番上に表示されます。
私はSQLにかなり精通していますが、これまで実際にUNION
演算子を使用する必要はありませんでした。