サブクエリなしでこのSPを書き直す方法はありますか?基本的に、I.RemarkIdがnullになることがあります。私は、左結合または左外部結合を使用しようとしていました。常にflightinfoから行を返し、I.RemarkIdがnullでない場合はコメントを返し、I.remarkIdがnullの場合はコメント列にnullを返します。
ALTER PROCEDURE [dbo].[Peach_GetFlightInfoForRoute]
@FlightDate datetime,
@Origin nvarchar(3),
@dest nvarchar(3),
@Lang nvarchar(2)
AS
SELECT
I.FlightNumber
,FlightDate
,STD
,(select [Message] FROM FlightRemarkDetail WHERE RemarkId = I.RemarkId WHERE LangCode = @Lang) As [Remark]
FROM
[FlightInfo] as [I]
JOIN
[FlightNumbers] as [N]
ON
I.FlightNumber = N.FlightNumber
WHERE
FlightDate = @FlightDate AND (@Origin='' OR @Origin = N.Origin) AND (@dest = '' OR @dest = N.Destination)
FlightInfo
===========
FlightNumber nvarchar(16)
FlightDate datetime
STD nvarchar(4)
RemarkId int NULL
FlightRemarkDetail
==================
RemarkDetailId int
RemarkId int NOT NULL
LangCode nvarchar(2)
Message nvarchar(512)