1

Student、Question、Answer の 3 つのテーブルがあります。Answer には、Student と Question の両方に対する FK があります。学生と質問にクロス結合を使用しました。

Create PROCEDURE [dbo].[Fetch_AnswersForStudents]
    @studentIds [Int_udtt] READONLY
    , @questionIds [Int_udtt] READONLY

AS
BEGIN

    SELECT
        [tQID].[Id]
        , ISNULL([tA].[StudentId], 0) AS StudentId
        , [tA].[Answer] AS Answer
    FROM
        @questionIds AS tQID        
        CROSS JOIN @studentIds AS tSID        
        LEFT OUTER JOIN Answer AS tA 
            ON tA.QuestionId = tQID.Id            
            AND tA.StudentId = tSID.Id 

END

このプロシージャの目的は、与えられた学生/質問に対応する回答があるかどうかを判断することです。私の質問は、同じ目標を達成するためにクロス結合を使用しない方法はありますか? さらに、回答エントリを含むセットを返すことをお勧めします。

4

0 に答える 0