繁体   English   中英

连接需要 sql 脚本帮助

[英]sql script help needed with joins

如何将 3 个表数据与一个公共列合并。

create table #t1 (id varchar(3), name_1 varchar(10))
insert into #t1 values (101,'red')
insert into #t1 values (102,'green')
insert into #t1 values (103,'blue')

create table #t2 (id varchar(3), address_1 varchar(10), state_1 varchar(10))
insert into #t2 values (101,'lon','ab')
insert into #t2 values (101,'fin','pq')
insert into #t2 values (102,'san','cd')
insert into #t2 values (102,'new', 'mn')

create table #t3 (id varchar(3), examdt varchar(10), examtime varchar(10), centre_code varchar(10))
insert into #t3 values (101,'2017-01-01','08:05', 'cod')
insert into #t3 values (101,'2018-04-15','07:15','salm')
insert into #t3 values (101,'2015-08-08', '12:25','targ')
insert into #t3 values (102,'2019-03-11','09:45', 'hen')
insert into #t3 values (102,'2020-05-25','17:15','mint')
insert into #t3 values (103,'2015-05-08', '12:45','fish')

我试过了:

select u.id, name_1, address_1, state_1, examdt, examtime, centre_code from 
(
select id from #t1 union
select id from #t2 union
select id from #t3 ) as u left outer join #t1 on #t1.id = u.id
left outer join #t2 on #t2.id = u.id
left outer join #t3 on #t3.id = u.id 

运行上述脚本后,它正在执行交叉连接。

我希望它应该带来 3 行所有非常见列。

我想你想要一个内部连接。 我根据我认为您打算插入 ID 101、102 和 103(并非全部为 101)的描述更新了插入中的 ID 值。

更新了表创建语句:

create table #t1 (id varchar(3), name_1 varchar(10))
    insert into #t1 values (101,'red')
    insert into #t1 values (102,'green')
    insert into #t1 values (103,'blue')
    
create table #t2 (id varchar(3), address_1 varchar(10), state_1 varchar(10))
    insert into #t2 values (101,'lon','ab')
    insert into #t2 values (102,'san','cd')
    insert into #t2 values (103,'new', 'mn')

create table #t3 (id varchar(3), examdt varchar(10), examtime varchar(10), centre_code varchar(10))
    insert into #t3 values (101,'2017-01-01','08:05', 'cod')
    insert into #t3 values (102,'2018-05-15','07:15','salm')
    insert into #t3 values (103,'2015-05-08', '12:25','targ')

查询以返回所有 3 个表中的数据:

select u1.id, u1.name_1, u2.address_1, u2.state_1, u3.examdt, u3.examtime, u3.centre_code 
from #t1 u1
join #t2 u2 on (u2.id = u1.id)
join #t3 u3 on (u3.id = u1.id)

Output:

id |name_1|address_1|state_1|examdt    |examtime|centre_code|
---+------+---------+-------+----------+--------+-----------+
101|red   |lon      |ab     |2017-01-01|08:05   |cod        |
102|green |san      |cd     |2018-05-15|07:15   |salm       |
103|blue  |new      |mn     |2015-05-08|12:25   |targ       |

一个唯一键约束将解决三个表的问题。

暂无
暂无

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

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