【发布时间】:2015-04-24 09:05:21
【问题描述】:
我无法根据需要查看数据,
IDFlight | Dep1 | Des1| Date | IDFlight2 | Dep2 | Des2 | Date | Price
---------+------+-----+-------+-----------+------+------+--------+--------
2 | AYT | PRN |20.3.15| 3 | PRN | AYT | 27.3.15| 150
2 | AYT | PRN |20.3.15| 4 | PRN | AYT | 30.3.15| 150
1 | AYT | PRN |23.3.15| 4 | PRN | AYT | 30.3.15| 150
1 | AYT | PRN |17.3.15| 3 | PRN | AYT | 27.3.15| 150
所以搜索查询是日期 +- 3 天,两个航班。
在我的情况下,每个航班都单独在表 Flight 中注册,每个航班都有他的航班号和他的方向、日期和定价(例如返回和单程)。 现在这里的问题是,当用户选择返回选项时,会在一行中显示 2 个航班,(航班 1 到目的地,航班 2 从目的地返回)图片中的示例中的日期线之间也存在差异.
我想要实现的是像上面的例子一样显示数据,每个“单向”记录都应该与“返回”记录匹配。即使第一个数据是重复的。
我做了很多研究但没有结果, 我也尝试过使用视图但没有成功
我尝试联合没有成功。
@prmDepDay int, @prmDesDay int, @prmDateDep datetime, @prmFrom int, @prmTo int,
@prmDateRe datetime, @prmFromRe int, @prmToRe int, @prmTotalRe int
AS
BEGIN
DROP TABLE departureflights
SELECT TOP(100) PERCENT
t_flights.idflight,
t_flights.flightnumber,
t_departureairport.depairportname,
t_destinationairport.desairportname,
t_flights.startdate,
t_flights.totalseats
INTO departureflights
FROM t_flights
INNER JOIN t_departureairport
ON t_flights.iddepartureairport = t_departureairport.iddepartureairport
INNER JOIN t_destinationairport
ON t_flights.iddestinationairport = t_destinationairport.iddestinationairport
INNER JOIN t_flightdirections
ON t_flights.iddirection = t_flightdirections.iddirection
WHERE t_departureairport.iddepartureairport = @prmFrom
AND t_destinationairport.iddestinationairport = @prmTo
AND startdate >= Dateadd(day,-@prmDepDay,@prmDateDep)
AND startdate <= Dateadd(day,@prmDepDay,@prmDateDep)
--and TotalSeats>= @prmTotal
ORDER BY t_flights.startdate
DROP TABLE returnflights
SELECT t_flights.idflight,
t_flights.flightnumber AS ReFlightNumber,
t_departureairport.depairportname AS ReDepAirportName,
t_destinationairport.desairportname AS ReDesAirportName,
t_flights.enddate ,
t_flights.totalseats
INTO returnflights
FROM t_flights
INNER JOIN t_departureairport
ON t_flights.iddepartureairport = t_departureairport.iddepartureairport
INNER JOIN t_destinationairport
ON t_flights.iddestinationairport = t_destinationairport.iddestinationairport
INNER JOIN t_flightdirections
ON t_flights.iddirection = t_flightdirections.iddirection
WHERE t_departureairport.iddepartureairport = @prmFromRe
AND t_destinationairport.iddestinationairport = @prmToRe
AND enddate >= Dateadd(day,-@prmDesDay,@prmDateRe)
AND enddate <= Dateadd(day,@prmDesDay,@prmDateRe)
AND totalseats>= @prmTotalRe
ORDER BY t_flights.enddate
【问题讨论】:
-
也许交叉连接对你有帮助?
-
您已将此帖子列为 C#。您可以从 C# 执行存储 SQL 过程,然后返回结果。这在 C# 中比使用 SQL 查询更容易完成。执行连接后,您可以从单个“连接结果”创建多行。如果您可以发布存储 SQL 过程的结果,我可以提供帮助。
标签: c# sql sql-server-2008