求一个select 句子

来源:百度知道 编辑:UC知道 时间:2024/06/21 19:39:30
----
--要求:显示表t2的内容,并且吧tid1,tid2用t1中对应的name代替
--显示结果为 1,t1_name1,t1_name2
create table t1
(
id int,
name nvarchar(10)
)
go
insert into t1 values(1,'t1_name1')
insert into t1 values(2,'t1_name2')
go

create table t2
(
id int,
tid1 int, --对应t1中的记录的id
tid2 int --对应t1
)
go
insert into t2 values(1,1,2)
go
应该是这样吧:
SELECT T2.ID
,(SELECT NAME FROM T1 WHERE ID=T2.TID1) AS TID1
,(SELECT NAME FROM T1 WHERE ID=T2.TID2) AS TID2
FROM T2

首先谢谢你,这样可以做到
但是效率可能不太高。
我在实际中的用处是统计煤矿工人每月下井情况,具体到每日出勤的班次。考虑的效率,能不能再改进一点呢。

貌似只能这样了,没有更好的办法了。。多个表查和做连接是一样的,谢谢2楼和三楼

应该是这样吧:
SELECT T2.ID
,(SELECT NAME FROM T1 WHERE ID=T2.TID1) AS TID1
,(SELECT NAME FROM T1 WHERE ID=T2.TID2) AS TID2
FROM T2

两个左连接,效率应该要高一些。

select c.id,c.t1_name1,d.name as t1_name2 from
(select a.*,b.name as t1_name1 from t2 a left join t1 b on a.tid1 = b.id) as c left join t1 d on c.tid2 = d.id

查询如下 测试通过

select a.id,b.name as name1,c.name as name2
from t2 a,t1 b,t1 c
where a.tid1*=b.id and a.tid2*=c.id