新手提问,实在是不会的说~

phh1989 2009-07-31 10:32:17
有没有办法实现这样子的效果

tb_lei1
---zdbh-----mc1----
1 AAAA
2 BBBB

tb_lei2
---zdbh-----mc2----
1 CCCC
2 DDDD

tb_xm
---zdbh------lei1bh--------lei2bh------
1 1 <NULL>
1 2 <NULL>
2 <NULL> 1
3 1 <NULL>
3 <NULL> 1
3 <NULL> 2

想要获得的效果
---zdbh------lei1mc---------lei2mc------
1 AAAA <NULL>
1 BBBB <NULL>
2 <NULL> CCCC
3 AAAA     <NULL>
3 <NULL> CCCC
3 <NULL> DDDD


附带说明一下 ,我的数据库是2000的
...全文
108 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
alisafan123 2009-07-31
  • 打赏
  • 举报
回复
sf
  • 打赏
  • 举报
回复
左连接ms结果不对啊,思索中。。。。。
  • 打赏
  • 举报
回复

if object_id('tb_lei1') is not null
drop table tb_lei1

create table tb_lei1
(
zdbh int,
mc1 varchar(4)
)

if object_id('tb_lei2') is not null
drop table tb_lei2

create table tb_lei2
(
zdbh int,
mc2 varchar(4)
)

if object_id('tb_xm') is not null
drop table tb_xm

create table tb_xm
(
zdbh int,
lei1bh int,
lei2bh int
)

insert tb_lei1
select 1,'AAAA' union all
select 2,'BBBB'

insert tb_lei2
select 1,'CCCC' union all
select 2,'DDDD'

insert tb_xm
select 1,1,null union all
select 1,2,null union all
select 2,null,1 union all
select 3,1,null union all
select 3,null,1 union all
select 3,null,2

--子查询方式
select zdbh,(select mc1 from tb_lei1 where zdbh = tx.lei1bh) lei1mc,(select mc2 from tb_lei2 where zdbh = tx.lei2bh) lei2mc from tb_xm tx
--表连接方式
select tx.zdbh,tl1.mc1,tl2.mc2
from tb_xm tx
left join
tb_lei1 tl1 on tl1.zdbh=tx.lei1bh
left join
tb_lei2 tl2 on tl2.zdbh=tx.lei1bh

/**
zdbh lei1mc lei2mc
----------- ------ ------
1 AAAA NULL
1 BBBB NULL
2 NULL CCCC
3 AAAA NULL
3 NULL CCCC
3 NULL DDDD

(所影响的行数为 6 行)

zdbh mc1 mc2
----------- ---- ----
1 AAAA CCCC
1 BBBB DDDD
2 NULL NULL
3 AAAA CCCC
3 NULL NULL
3 NULL NULL

(所影响的行数为 6 行)

**/
--小F-- 2009-07-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 phh1989 的回复:]
啊~你们都很牛啊~~惭愧啊...
我什么时候才能变得很厉害的说...
顺带问下...学习SQL是多实践好还是多看书好...
我现在都已经大三了...再不学就晚了...
想问问方向...再走错路就来不及了....
[/Quote]

所谓的理论联系实际 就这样 实践和理论都重要啊
phh1989 2009-07-31
  • 打赏
  • 举报
回复
啊~你们都很牛啊~~惭愧啊...
我什么时候才能变得很厉害的说...
顺带问下...学习SQL是多实践好还是多看书好...
我现在都已经大三了...再不学就晚了...
想问问方向...再走错路就来不及了....
zjybushiren88888 2009-07-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fredrickhu 的回复:]
顶 就是两个lfet join
[/Quote]
guguda2008 2009-07-31
  • 打赏
  • 举报
回复
顶梁哥和小F
drysea 2009-07-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liangck 的回复:]
SQL codeSELECT
A.zdbh
B.mc1AS lei1mc,
C.mc2AS lei2mcFROM tb_xmAS ALEFTJOIN tb_lei1AS BON A.lei1bh= B.zdbhLEFTJOIN tb_lei2AS CON A.lei2bh= C.zdbh
[/Quote]

小梁永远是。。。哎。。。呆在群里水水就好了嘛
水族杰纶 2009-07-31
  • 打赏
  • 举报
回复
select c.zdbh,a.mc1,b.mc2
from tb_xm c left join tb_lei1 a on c.zdbh=a.zdbh
left join tb_lei2 b on c.zdbh=b.zdbh
--小F-- 2009-07-31
  • 打赏
  • 举报
回复
顶 就是两个lfet join
liangCK 2009-07-31
  • 打赏
  • 举报
回复
SELECT
A.zdbh
B.mc1 AS lei1mc,
C.mc2 AS lei2mc
FROM tb_xm AS A
LEFT JOIN tb_lei1 AS B
ON A.lei1bh = B.zdbh
LEFT JOIN tb_lei2 AS C
ON A.lei2bh = C.zdbh

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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