来自二级外键表的SELECT值

时间:2014-07-01 07:34:01

标签: sql sql-server database select join

向地球人问候,

我有问题。让我首先介绍我的表格结构:

    CREATE TABLE Person
    (
        id varchar(50) NOT NULL PRIMARY KEY,
        name varchar(50) NOT NULL,
        adress varchar(50) NOT NULL references Adress(id)
    )

    CREATE TABLE Adress
    (
        id varchar(50) NOT NULL PRIMARY KEY,
        addressName varchar(50),
        city varchar(50),
        aState varchar(50),
        linkToCountry varchar(50) references Country(id)
    )

    CREATE TABLE Country
    (
        id varchar(50) NOT NULL PRIMARY KEY,
        countryName varchar(50)
    )

我想要达到的目标是:选择一个人的名字'以及他们的地址名称'和#country country'他们来自。 我知道这是一个加入相关的问题,但我似乎无法解决这个问题。

那么精通SQL的人会有什么帮助吗?

非常感谢任何人都有提升sql加入的链接,所以我可以熟悉它。

2 个答案:

答案 0 :(得分:2)

您可以使用简单连接获得结果,如下所示。这将使用地址名称和国家/地区名称重新签名人名。但是,它只返回在国家/地区表中的地址表和国家/地区记录中具有地址记录的人名。如果您想要检索所有人,无论地址/国家/地区是否存在,您都需要使用左连接。

SELECT Person.Name, Address.addressname,Country.countryName
FROM Person 
     JOIN Address on Person.address = Address.Id
     JOIN Country ON Address.linkToCountry = Country.id

答案 1 :(得分:1)

试试这个:

SELECT p.name, a.addressName, c.countryName
FROM Person p 
INNER JOIN Adress a ON p.adress = a.id 
LEFT OUTER JOIN Country c ON a.linkToCountry = c.id