client_application
このようなデータで呼び出されるテーブルがあります。
Id user_id name creationDate
---------------------------------------
1 5 name1 date
2 4 name2 date
3 98 name3 date
また、application_status
アプリケーションのステータス フィードを保持するテーブルも呼び出されます(application_id
外部キーです)。
Id aplication_id status other_columns creationDate
----------------------------------------------------------------------
1 1 APPLICATION_SUMITTED data date
2 2 APPLICATION_SUMITTED data date
3 1 APPLICATION_RECEVIED data date
4 1 BANK_APPROVED data date
5 3 APPLICATION_SUMITTED data date
6 2 APPLICATION_RECEVIED data date
ステータスでアプリケーションを照会したい。たとえば、提出された最新のアプリケーションを取得しますか? または、銀行が承認したアプリケーションを入手してください。
このような SQL クエリを実装するにはどうすればよいですか?
私はこれを試しました;
SELECT *
FROM (SELECT * FROM application_status ORDER BY creationDate DESC) t1
LEFT JOIN client_application on client_application.id = t1.application_id
GROUP BY t1.application_id;
これで問題ありません。最新の状態のアプリケーションを取得できますが、where 句を入れようとすると、
SELECT *
FROM (SELECT * FROM application_status ORDER BY creationDate DESC) t1
LEFT JOIN client_application on client_application.id = t1.application_id
where t1.status = 'APPLICATION_SUBMITTED'
GROUP BY t1.application_id;
それはすべてのapplication_status
ステータスAPPLICATION_SUBMITTED
列を返します..1application_id
つのアイテムを返します(上の表を確認してください)が、ご覧のとおり、ID番号1のアプリケーションはAPPLICATION_RECEIVED
最新のステータスアイテムとしてステータスを持っています..したがって、結果セットでこれを期待することはできません.
多分私のアプローチは完全に間違っています。私はどんな解決策にもオープンです。
ありがとう。