2张表关联问题?

totsheng 2008-12-23 10:42:28
我现在有两个表,一个是信息表,一个是证书表,其中信息表的部分字段有INFO_ID,LETTER_ID,证书表的部分字段有LETTER_ID,LETTER_NAME,LETTER_PARENT。
证书表是一个二级内部关联的表,也就是说证书是分为一级证书和二级证书的,一级证书的LETTER_PARENT统一值是0,二级证书的值就是一级证书的LETTER_ID。信息表中的LETTER_ID为二级的证书ID。
现在我想查询信息表的内容并且通过信息表的LETTER_ID来获得证书表中一级证书的LETTER_NAME
请问SQL语句应该怎么写?
谢谢
...全文
98 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
totsheng 2008-12-23
  • 打赏
  • 举报
回复
好了,谢谢啊
结贴给分了
firecc05 2008-12-23
  • 打赏
  • 举报
回复
哦,不好意思。我先前的句子只能处理LETTER表的LETTER_PARENT 为0或Null的情况。
如果是INFO表里还有LETTER_ID为null的话,就把句子改成

select x.INFO_ID,x.USER_ID, zp.LETTER_NAME
from INFO x
left outer join LETTER z on x.LETTER_ID = z.LETTER_ID
left outer join LETTER zp on z.LETTER_PARENT=zp.LETTER_ID

firecc05 2008-12-23
  • 打赏
  • 举报
回复
我这个是out join的连接,就算有null值也给查出并显示出来的
totsheng 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 firecc05 的回复:]
select x.INFO_ID,x.USER_ID, zp.LETTER_NAME
from 信息表 x
inner join 证书表 z on x.LETTER_ID = z.LETTER_ID
left outer join 证书表 zp on z.LETTER_PARENT=zp.LETTER_ID
[/Quote]

要是在INFO表里还有LETTER_ID为null的 但是也要查询出来呢?
firecc05 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 totsheng 的回复:]
来个形象点的!
INFO
INFO_ID USER_ID......LETTER_ID
1 1 11

LETTER
LETTER_ID LETTER_NAME......LETTER_PARENT
1 英语证书 0
11 CET-4 1

像这样的表结构

想得出的结果是:
INFO_ID USER_ID........LETTER_NAME
1 1 英语证书

请问SQL怎么写?
[/Quote]


select x.INFO_ID,x.USER_ID, zp.LETTER_NAME
from INFO x
inner join LETTER z on x.LETTER_ID = z.LETTER_ID
left outer join LETTER zp on z.LETTER_PARENT=zp.LETTER_ID
Zoezs 2008-12-23
  • 打赏
  • 举报
回复
如果只有0和1的话,
select a.LETTER_NAME from 证书表 a , 信息表 b where a.LETTER_PARENT = 0 and a.LETTER_ID = b.LETTER_ID
这样应该可以了啊。
firecc05 2008-12-23
  • 打赏
  • 举报
回复
select x.INFO_ID,x.USER_ID, zp.LETTER_NAME
from 信息表 x
inner join 证书表 z on x.LETTER_ID = z.LETTER_ID
left outer join 证书表 zp on z.LETTER_PARENT=zp.LETTER_ID
totsheng 2008-12-23
  • 打赏
  • 举报
回复
来个形象点的!
INFO
INFO_ID USER_ID......LETTER_ID
1 1 11

LETTER
LETTER_ID LETTER_NAME......LETTER_PARENT
1 英语证书 0
11 CET-4 1

像这样的表结构

想得出的结果是:
INFO_ID USER_ID........LETTER_NAME
1 1 英语证书

请问SQL怎么写?
firecc05 2008-12-23
  • 打赏
  • 举报
回复
纠正一下我自己的

select x.*, zp.LETTER_NAME
from 信息表 x
inner join 证书表 z on x.LETTER_ID = z.LETTER_ID
left outer join 证书表 zp on z.LETTER_PARENT=zp.LETTER_ID
firecc05 2008-12-23
  • 打赏
  • 举报
回复
select z.*, xp.LETTER_NAME
from 证书表 z
inner join 信息表 x on z.LETTER_ID = x.LETTER_ID
left outer join 信息表 xp on x.LETTER_PARENT=xp.LETTER_ID
jinhuiyu 2008-12-23
  • 打赏
  • 举报
回复
select info.INFO_ID, info.LETTER_ID, ltr.LETTER_NAME from INFORMATION info
left join LETTER ltr on (info.LETTER_ID = ltr.LETTER_ID)
where ltr.LETTER_PARENT is null
dawugui 2008-12-23
  • 打赏
  • 举报
回复
不过看你的叙述真累,你接给出表结构,测试数据和想要的结果即可.
dawugui 2008-12-23
  • 打赏
  • 举报
回复
select a.LETTER_NAME from 证书表 a , 信息表 b where a.LETTER_PARENT = 0 and a.LETTER_ID = b.LETTER_ID

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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