わかりました。ストアド プロシージャについて少し助けが必要です。それは私の頭を少し超えていて、どのように進めればよいかわかりません。SPは、私が取り組んでいるプロジェクトの検索機能用です。エンドユーザーからの選択に基づいて、利用可能な座席を見つけることです。ユーザーは、以下に基づいて検索できる必要があります。
出発空港(または「ANY」)
到着空港(または「ANY」)
最早出発時間
最終出発時刻
最小座席数
返還される最大フライト数
最初は、個別の SELECT ステートメントでうまくいくと思っていましたが、ご存じのとおり、select ステートメントは個別のクエリとして扱われ、6 つの異なる結果が返されました。だから、私はそれらを 1 つの SELECT に含めようとしましたが、戻り値に問題があるため、私のロジックはおかしなことになっているに違いありません。誰かが私を正しい方向に向けることができれば、それは非常にありがたいです. コードは次のとおりです。
ALTER PROCEDURE [dbo].[usp_FindSeats]
(
@DepartureAirport char(3),
@ArrivalAirport char(3),
@EarliestDepTime datetime,
@LatestDepTime datetime,
@minSeatsAvailable int,
@maxFlightsRequested int
)
AS
BEGIN
SELECT * FROM Flight
WHERE
(@DepartureAirport = UPPER('ANY') OR DepartAirport = @DepartureAirport)
AND
(@ArrivalAirport = UPPER('ANY') OR ArriveAirport = @ArrivalAirport)
AND
(DepartTime >= @EarliestDepTime)
AND
(DepartTime <= @LatestDepTime)
AND
(FlightSeatsAvailiable >= @minSeatsAvailable)
AND
((SELECT COUNT(FlightID) FROM Flight) <= @maxFlightsRequested)
--IF (@DepartureAirport = UPPER('ANY'))
--BEGIN
--(SELECT * FROM Flight WHERE DepartAirport != '')
--END
--ELSE
--SELECT * FROM Flight WHERE DepartAirport = @DepartureAirport
--IF (@ArrivalAirport = UPPER('ANY'))
--Begin
--(SELECT * FROM Flight WHERE ArriveAirport != '')
--END
--ELSE
--SELECT * FROM Flight WHERE ArriveAirport = @ArrivalAirport
--SELECT * FROM Flight WHERE DepartTime >= @EarliestDepTime
--SELECT * FROM Flight WHERE DepartTime <= @LatestDepTime
--SELECT * FROM Flight WHERE FlightSeatsAvailiable >= @minSeatsAvailable
--SELECT * FROM Flight WHERE (SELECT COUNT(FlightID) FROM Flight) <= @maxFlightsRequested