[OK]を、私はちょっと私の頭の上にあるストアドプロシージャを少し必要があり、私はどのように進むかわかりません。 SPは私が取り組んでいるプロジェクトの検索機能用です。エンドユーザーからの選択に基づいて利用可能なシートを見つけることです。複数のパラメータに基づく検索クエリのSQLストアドプロシージャ
出発空港(または「ANY」)
到着空港(または「ANY」)
最も早い出発時間
最新出発時間:ユーザーが次の項目に基づいて検索することができるはずです
分の席
012返すことが可能な最大の航空券
私は当初、別々の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
[複数のオプションパラメータのSQL検索クエリ]の重複が可能です。(http://stackoverflow.com/questions/333965/sql-search-query-for-multiple-optional-parameters) – GSerg