我有一个我完全坚持的功课问题,基本上我必须编写一个SQL语句,返回某个城市所有机场的数据集。数据集必须显示: 城市名称,国家,机场代码,纬度,经度。
到目前为止,我最接近这个:
SELECT
City.name as city,
Country.name as country,
Airport.code,
Airport.latitude,
Airport.longitude
FROM Country, Airport, City
INNER JOIN Airport a1
ON City.id = a1.city
INNER JOIN Country c1
ON City.country = c1.id
WHERE Airport.city = 12;
这会显示正确的机场信息,但城市和国家/地区的数据会显示表格中的所有国家/地区和城市。如果在这种情况下有所不同,City.country也会引用Country.id。 如果提前感谢,任何有关我向前方指出正确方向的信息都会非常感激。
答案 0 :(得分:0)
您提供的代码实际上是两个连接。首先,您通过FROM
子句下的逗号分隔列表加入。这是一种传统的做法,所以你使用另一种方式是正确的。除了City
之外,我只需删除表格(我当然选择,因为其他表格是通过单独的INNER JOIN
条款引入的),它应该有效。
SELECT
City.name as city,
c1.name as country,
a1.code,
a1.latitude,
a1.longitude
FROM City
INNER JOIN Airport a1 ON City.id = a1.city
INNER JOIN Country c1 ON City.country = c1.id
WHERE a1.city = 12;
您还可以使用INNER JOIN
语法审核this TechNet article。
我很想删除你的别名用法,因为我倾向于认为它删除了一些可读性,如果它不是完全必要的(如果你有子查询的那样),但我保留了它因为你在原来的问题中得到了它。