首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在联接中使用相同的表

在联接中使用相同的表
EN

Stack Overflow用户
提问于 2015-06-10 15:32:34
回答 3查看 260关注 0票数 0

我正在使用Microsoft数据库和来自SQLZOO.net的问题来学习我的工作。我被困在这个问题上:

对于在达拉斯拥有“主办公室”的每一个客户,请显示“主办公室”的AddressLine1和“船运”地址的AddressLine1 --如果没有送货地址,请将其留为空白。每个客户使用一行。

怎么用同一张桌子?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-10 15:34:27

您需要将表化名以连接到其本身。例如:

代码语言:javascript
复制
SELECT T1.Column1, T2.Column2, ... 
FROM Table1 AS T1
JOIN Table1 AS T2
    ON T1.Column1 = T2.Column1
票数 5
EN

Stack Overflow用户

发布于 2015-06-10 16:08:20

我浏览了AdventureWorks模式,我认为这是正确的方法。它确实涉及到一个自连接,它是通过使用第二个别名(Person.Address为"oa“和"sa”)将相同的表引入查询来完成的。由于投递地址连接显然是可选的,我想说,这实际上是问题的更棘手的一部分,以获得正确。

代码语言:javascript
复制
select ...
from
    Person.Address as oa /* office address */
    inner join Sales.CustomerAddress as ca on ca.CustomerID = oa.CustomerID
    left outer join Person.Address as sa /* shipping address*/
        on      ca.CustomerID = oa.CustomerID
            and sa.AddressTypeID = (
                select AddressTypeID
                from Person.AddressType
                where Name = 'Shipping'
            )
    where
        oa.AddressTypeID = (
            select AddressTypeID
            from Person.AddressType
            where Name = 'Main Office'
        ) and oa.City = 'Dallas'
票数 1
EN

Stack Overflow用户

发布于 2015-06-11 07:48:29

试试这个,你可以在这里看到自我连接的魔力-

从表A1中选择A1.Attribute 1,A2.Attribute 2,表A2,其中A1.Attribute 2=A2.Attribute 1

或从表A1中选择A1.Attribute 1,A2.Attribute 2,表A2,其中A1.Attribute 1=A2.Attribute 2

在第二个属性中,您将看到两个属性的匹配值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30760878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档