【问题标题】:SQL different condition multi selectSQL不同条件多选
【发布时间】:2015-01-29 19:58:11
【问题描述】:

我想做的(对于每个航班)是选择 Flight_number、Departure_airport's Name 和 Arrival_airport's Name 。出发有 MIN Leg_number,到达有 MAX Leg_number。

我已经试过了。但是加入零件还是缺少什​​么,这里是链接:http://sqlfiddle.com/#!2/263a2/5

【问题讨论】:

  • 您正在使用 Flight_leg 中的同一列“Leg_number”来加入 ln 中的最大和最小航段编号,这不起作用?
  • 我需要找到 Departure_airport_code(MIN leg number) 和 Arrival_airport_code(MAX leg number) 然后加入 AIRPORT 表。
  • 因此,您首先需要特定航班号的(最小和最大航段编号)的机场代码,然后根据这些代码获取机场信息。对吗?
  • 是的,每个航班的 min(departure) and max(arrival) leg numbers' 部门名称和航班号

标签: mysql sql select join left-join


【解决方案1】:

看起来很奇怪..但这可能是您所追求的... 我们在别名为“Z”的子查询中获得每个航班的最小/最大航段 我们使用它来加入回 flight_leg 两次,一次用于离开,一次用于到达 并再次加入两次返回机场一次出发一次到达。

 SELECT Z.Flight_Number, DA.Name DeptName, AA.Name ArrivName
    FROM (SELECT MIN(Leg_Number) MLN, MAX(Leg_Number) MxLN, Flight_Number
               FROM Flight_Leg Group by Flight_Number) Z
    INNER JOIN Flight_Leg D
     on D.Flight_Number = Z.Flight_Number 
    and D.Leg_Number = Z.MLN
    INNER JOIN Flight_Leg A
     on A.Flight_Number = Z.Flight_Number
     and A.Leg_Number = Z.MxLN
    INNER JOIN AirPort DA
     on DA.AirPort_Code = D.Departure_AirPort_Code
    INNER JOIN AirPort AA
     on AA.AirPort_Code = A.Arrival_AirPort_Code

http://sqlfiddle.com/#!2/263a2/56

【讨论】:

  • 这正是我所需要的 :) 谢谢。
【解决方案2】:

不完全确定这是否是您所追求的。它是用 MS SQL 编写的,因此语法需要一些小的调整。

SELECT fl.Flight_number,
ao.Name,
ai.Name,
(select min(Leg_number) from FLIGHT_LEG fa where fl.Flight_number
    = fa.Flight_number) as min_leg_number,

(select max(Leg_number) from FLIGHT_LEG fb where fl.Flight_number
    = fb.Flight_number) as max_leg_number
FROM Flight_leg Fl
inner join AIRPORT as ao on fl.Departure_airport_code =
    ao.Airport_code
inner join AIRPORT as ai on fl.Arrival_airport_code =
    ai.Airport_code

【讨论】:

  • 那是一样的,但我需要 2 行 2 次航班这里是链接:sqlfiddle.com/#!2/99429/1
  • 这是语法问题?
  • flight_number 1 只有 1 行,因为机场代码 'CCC' 无效,所以内部连接将其丢弃。更改为左连接。
  • 如果您可以提供您正在寻找的结果集,那么这将有所帮助。
猜你喜欢
  • 2015-12-08
  • 1970-01-01
  • 1970-01-01
  • 2017-02-16
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多