SQL子查询JOIN

时间:2015-10-12 20:40:19

标签: mysql sql join

我有以下表格

Table 'Flight' (
number int,
dest VARCHAR(4),
arrTime Date,
Foreign Key(dest) references Airport(code)
)

Table 'Airport' (
code VARCHAR(4),
PRIMARY KEY(code)
)

假设我有以下飞行数据

'Flight'
 2,'TX','10/5/2015 1:32'
 3,'NY','10/5/2015 4:20'
 1,'TX','10/5/2015 1:20'
 4,'NY','10/5/2015 4:21'

和机场

'TX'
'NY'

对于每个机场,我想要检索连续到达机场的所有航班号,这样几乎就像我为航班表提供的数据一样。我正在处理一个子查询,但我无法获得所需的输出......

 1,'TX','10/5/2015 1:20'
 2,'TX','10/5/2015 1:32'
 3,'NY','10/5/2015 4:20'
 4,'NY','10/5/2015 4:21'

我尝试过以下但我无法获得正确的输出

SELECT Airport.code, Timez
FROM Flight JOIN Airport
ON Flight.dest = Airport.code
ORDER BY DATE(arrTime) DESC as Timez

帮助将不胜感激

3 个答案:

答案 0 :(得分:1)

使用ORDER BY Airport.code, Flight.arrTime

将同一机场的所有航班分类,然后在这些航班内按时间排序。

请勿使用DESC,这会使它们按相反的时间顺序排列。

答案 1 :(得分:0)

我想你想要这个得到你指出的输出:

SELECT Flight.number n, Airport.code c, Flight.arrTime t
   FROM Flight JOIN Airport
   ON Flight.dest = Airport.code
   ORDER BY c, t DESC 

无需在DATE转换arrTime字段。

然而,由于DATE格式的arrTime字段无法保留该信息,因此您无法获得完整的日期和时间。你需要一个DATETIME或TIMESTAMP字段。

答案 2 :(得分:0)

SELECT Airport.code,Flight.arrTime 从航班JOIN机场 在Flight.dest = Airport.code ORDER BY Airport.code,Flight.arrTime ASC