1

我有两个具有多个连接的表,例如:

第一个表:Tbl_Flights,它有字段City_FromCity_To,包含城市的键。此外,还有一个名为 的表Tbl_Cities,它具有唯一的计数器字段和城市名称字段。

如何创建一个查询,该查询可以打印出Tbl_Flights带有出发和到达城市名称的表中的所有航班,例如:

From               To
------------------------------
Moscow             New York
Amsterdam          Paris
Helsinki           Tallin

双重INNER JOIN解决问题吗?

4

2 回答 2

3

double INNER JOIN 能解决问题吗?

是的,它确实。但是它们是两个INNER JOINs到同一个表Cities,这样就可以把选择的CiteName列分成两个不同的列Fromto

像这样:

SELECT 
  f.FlightName,
  FromCities.cityName "From",
  ToCities.CityName "To"
FROM Tbl_Flights f
INNER JOIN Cities FromCities ON f.City_From = FromCities.CityID
INNER JOIN Cities ToCities   ON f.City_To   = ToCities.CityID;

SQL 小提琴演示

这会给你:

| FLIGHTNAME |      FROM |       TO |
-------------------------------------
|    Flight1 |    Moscow | New York |
|    Flight2 | Amsterdam |    Paris |
|    Flight3 |  Helsinki |   Tallin |
于 2012-12-19T12:01:05.483 回答
0

类似的东西

SELECT f.FlightName, f.City_From, f.City_To
FROM Tbl_Flights f

将是最基本的,它将列出每个航班以及它来自哪个城市以及它去哪个城市。

如果您需要更复杂的查询返回,请告诉我,我很乐意提供帮助。

编辑:

在查看了额外的信息后,我认为以下内容应该符合您的要求: http ://www.sqlfiddle.com/#!2/5d32c/ 17 所以 Mahmoud Gamal 似乎很适合:)

SELECT f.FlightName, c.CityName as 'from', c1.CityName as 'to'
FROM Tbl_Flights f
join Tbl_Cities c on c.cityid = f.City_From 
join Tbl_Cities c1 on c1.cityid = f.City_To 
于 2012-12-19T12:06:49.897 回答