Хорошо, мне нужна небольшая помощь с сохраненным процессом, это немного по моей голове, и я не уверен, что делать дальше.SP предназначен для функции поиска в проекте, над которым я работаю.Это найти свободные места на основе выбора от конечного пользователя.Пользователь должен иметь возможность выполнять поиск по следующим параметрам:
Аэропорт вылета (или «ЛЮБОЙ»)
Аэропорт прибытия (или «ЛЮБОЙ»)
Самое раннее время вылета
Время последнего вылета
Доступно минимальное количество мест
Максимальное количество возвращаемых рейсов
Сначала я думал, что отдельные операторы SELECT помогут, но, как вы, наверное, знаетеоператоры SELECT обрабатывались как отдельные запросы, и в результате было получено 6 различных результатов.Итак, я попытался включить их в один 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