初学SQL内连接查询

时间:2014-08-04 05:12:26

标签: mysql sql sql-server

我有一个我完全坚持的功课问题,基本上我必须编写一个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。 如果提前感谢,任何有关我向前方指出正确方向的信息都会非常感激。

1 个答案:

答案 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

我很想删除你的别名用法,因为我倾向于认为它删除了一些可读性,如果它不是完全必要的(如果你有子查询的那样),但我保留了它因为你在原来的问题中得到了它。