繁体   English   中英

具有相同ID的2个表的内部联接

[英]Inner join of 2 tables with the same ID

我有一个表( T1 ),其中2列( XY )是id。 这些对应id的名称在另一个表( T2 )中,列name

假设我当时只使用X ,一个简单的内部联接就可以解决我在获取名称时遇到的问题。

Select T1.somedata,T1.somedata1,T2.name from T1
Inner Join T2 ON T1.X=T2.id

但是,如果我想要为T1.Y解析名称,该T1.Y呢?内部联接将这个name解析为??

Select T1.somedata,T1.somedata1,T2.name from T1
Inner Join T2 ON T1.X=T2.id
Inner Join T2 ON T1.Y=T2.id

我知道上面的查询是错误的。 我可以通过INNER Join T1.YT1.XT1.Y相对应的name吗?

-初学者

我建议总是在表和列中添加别名。 因此,您将确定选择了哪些数据。

select
    T1.somedata,
    T1.somedata1,
    T2X.name as XName,
    T2Y.name as YName
from T1 as T1
    inner join T2 as T2X on T2X.id = T1.X
    inner join T2 as T2Y on T2Y.id = T1.Y

这会将两个名称选为单独的列:

Select T1.somedata,T1.somedata1,T2a.name, T2b.name 
from T1
Inner Join T2 as T2a ON T1.X=T2a.id 
Inner Join T2 as T2b ON T1.Y=T2b.id

以下将在结果集中生成两个记录:

Select T1.somedata, T1.somedata1, T2.name
from T1
Inner Join T2 ON T1.X=T2.id Or T1.Y=T2.id

你需要连接表T2两次并在名称上提供别名以避免歧义。

SELECT  a.*, 
        b.name as NameB, 
        c.name as NameC
FROM    T1 a
        INNER JOIN T2 b
            ON a.x = b.id
        INNER JOIN T2 c
            On a.y = c.id

您需要连接表T2两次并在名称上提供别名以避免歧义。

SELECT  a.*, 
        b.name as NameB, 
        c.name as NameC
FROM    T1 a
        INNER JOIN T2 b
            ON a.x = b.id
        INNER JOIN T2 c
            On a.y = c.id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM