データベースの厄介な獣に対して作成する必要のあるストアドプロシージャがいくつかあります。テーブル(アプリケーション)をループし、アプリケーションテーブルのapplication_idを使用して、他のテーブル(一部は誇張/平均/ etc値)から値を引き出す必要があります。
これまでのところ:
declare @id INT
declare app cursor for
SELECT application_id from application
OPEN app
FETCH NEXT FROM app
INTO @id
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT a.NAME_LAST, a.NAME_FIRST, ca.status, (SELECT AVG(score) FROM reviews WHERE application_id = @id), (SELECT count(*) FROM reviews WHERE application_id = @id) FROM application a, committee_applications ca WHERE a.application_id = ca.application_id AND a.application_id = @id
FETCH NEXT FROM app INTO @id
END
CLOSE app
DEALLOCATE app
それは私が望む結果を私に与えています、しかし私はこれをするよりきれいな方法があると確信しています、そして私はこれを正しくするために今日精神的なジャンプをすることができないようです。これは私には本当に醜いように見えるので、誰かがこれを行うためのより良い方法を指摘できますか?
また、SELECTステートメントを1つずつ実行するのではなく、これらの値を一時テーブルに格納してから、完全な結果を返す必要があるようです。
任意の提案をいただければ幸いです。
ありがとう。