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