SQL连接(INNER JOIN)

时间:2015-08-18 05:20:44

标签: sql join

这部分要求您编写几个表的简单内连接。 编写一个SQL语句,返回伦敦所有机场的数据集。对于每个机场,数据集必须包含城市名称,国家,机场代码及其纬度和长度

我的回答:

       SELECT  City.name, Country.name, Airport.code, Airport.latitude,
               Airport.longtitude 
       FROM City, Airport, Country
          WHERE Country.id = City.Country
          AND   Airport.city = City.id
          AND   City.name = "London"

我是对的吗?我是否需要在代码上写上“INNER JOIN”或“ON”这样的关键字?

3 个答案:

答案 0 :(得分:1)

没关系。

SELECT City.name, Country.name, Airport.code, Airport.latitude, Airport.longtitude 
FROM City, Airport, Country 
WHERE 
    Country.id = City.Country 
AND Airport.city = City.id 
AND City.name = "London"

但也可以像这样写

SELECT City.name, Country.name, Airport.code, Airport.latitude, Airport.longtitude 
FROM 
    City 
    inner join Country ON Country.id = City.Country
    inner join Airport ON Airport.city = City.id 
WHERE 
    City.name = "London"

答案 1 :(得分:1)

鉴于该问题要求“简单的内部联接”,那么是的,您需要使用这些关键字! INNER JOIN用于链接具有匹配列的表。例如,如果一个表包含有关城市的详细信息,则另一个表可以通过其ID列引用它,而使用INNER JOIN的查询可以从两者中检索详细信息。如果城市细节发生变化,则只需在一个表格中进行更改。

在您的示例中,查询看起来像这样:

SELECT
    c.name,
    cty.name,
    ap.code,
    ap.latitude,
    ap.longtitude
FROM
    Airport ap
    INNER JOIN City c ON ap.city = c.id
    INNER JOIN Country cty ON c.Country = cty.id
WHERE
    c.name = "London"

答案 2 :(得分:0)

       SELECT  City.name, Country.name, Airport.code, Airport.latitude,
               Airport.longtitude

       from Airport
            inner join city on Airport.city = City.id
            inner join Country ON Country.id = City.Country
       where 
            city.name='London'