这种关联在术语上怎么称呼? 双关联吗? 请教.

hedylin 2005-07-23 03:19:48
CREATE TABLE T1(
F11 char(10) NOT NULL,
F12 char(10) NULL,
F13 char(10) NULL,
F14 char(10) NULL,
CONSTRAINT PK1 PRIMARY KEY NONCLUSTERED (F11)
)
go

CREATE TABLE T2(
F21 char(10) NOT NULL,
F22 char(10) NULL,
CONSTRAINT PK2 PRIMARY KEY NONCLUSTERED (F21)
)
go

ALTER TABLE T1 ADD CONSTRAINT RefT22
FOREIGN KEY (F13)
REFERENCES T2(F21)
go

ALTER TABLE T1 ADD CONSTRAINT RefT23
FOREIGN KEY (F14)
REFERENCES T2(F21)
go

Insert Into T2(F21, F22) Values('F211', '张三')
Insert Into T2(F21, F22) Values('F212', '李四')
Insert Into T2(F21, F22) Values('F213', '赵五')
Insert Into T2(F21, F22) Values('F214', '钱六')

Insert Into T1(F11, F12, F13, F14) Values('F111', 'F121', 'F211', 'F212')
Insert Into T1(F11, F12, F13, F14) Values('F112', 'F122', 'F213', 'F214')

--------想要的结果如下-------

F111 F121 张三 李四
F112 F122 赵五 钱六

----------------------------
...全文
95 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bugchen888 2005-07-23
  • 打赏
  • 举报
回复
连接查询快.....
zlp321002 2005-07-23
  • 打赏
  • 举报
回复
--没多大区别,你的是查询后,提取,我的是提取后查询
filebat 2005-07-23
  • 打赏
  • 举报
回复
我也在想这个问题:联接查询和子查询是哪个更快.
hedylin 2005-07-23
  • 打赏
  • 举报
回复
楼上,谢啦...
发完贴后我自个儿也在着磨...结果还是你快,呵呵...
能否解答,你的代码与俺的代码在执行效率方面有何区别....

Select a.F11, a.F12, F13 = b1.F22, F14 = b2.F22
From T1 a INNER JOIN
T2 b1 ON a.F13 = b1.F21 INNER JOIN
T2 b2 ON a.F14 = b2.F21
zlp321002 2005-07-23
  • 打赏
  • 举报
回复
--测试环境
CREATE TABLE T1(
F11 char(10) NOT NULL,
F12 char(10) NULL,
F13 char(10) NULL,
F14 char(10) NULL,
CONSTRAINT PK1 PRIMARY KEY NONCLUSTERED (F11)
)
go

CREATE TABLE T2(
F21 char(10) NOT NULL,
F22 char(10) NULL,
CONSTRAINT PK2 PRIMARY KEY NONCLUSTERED (F21)
)
go

ALTER TABLE T1 ADD CONSTRAINT RefT22
FOREIGN KEY (F13)
REFERENCES T2(F21)
go

ALTER TABLE T1 ADD CONSTRAINT RefT23
FOREIGN KEY (F14)
REFERENCES T2(F21)
go

Insert Into T2(F21, F22) Values('F211', '张三')
Insert Into T2(F21, F22) Values('F212', '李四')
Insert Into T2(F21, F22) Values('F213', '赵五')
Insert Into T2(F21, F22) Values('F214', '钱六')

Insert Into T1(F11, F12, F13, F14) Values('F111', 'F121', 'F211', 'F212')
Insert Into T1(F11, F12, F13, F14) Values('F112', 'F122', 'F213', 'F214')

--查询
select F11,
F12,
F13=(select F22 from T2 where F21=F13),
F14=(select F22 from T2 where F21=F14)
from T1
--结果
F11 F12 F13 F14
---------- ---------- ---------- ----------
F111 F121 张三 李四
F112 F122 赵五 钱六

(所影响的行数为 2 行)
--删除环境
drop table T1
drop table T2

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧