免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1131 | 回复: 1
打印 上一主题 下一主题

发在csdn的贴子, 没有人回答, 在这里试试运气, 请高手看看 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-09 17:51 |只看该作者 |倒序浏览
问题如下:
有主表: tb_client结构如下:
client_id, client_name ...... <字段>
  1      ,     A公司           <数据>
  2      ,     B公司
  27     ,     C公司


从表: tb_contact结构如下:
contact_id,client_id, contact_name ...... <字段>
1,          1      ,     张三            <数据>
2,          2      ,     李四
3,          27     ,     王五
3,          20     ,     李六

和关联表: tb_link 关联表结构如下
link_id, client_id, contact_id, deleted     <这行是字段>
1,        27,          1,     0           <数据范例>
2,        27,          2,     0           <数据范例>
2,        28,          10,     0           <数据范例>
2,        28,          11,     0           <数据范例>

说明部分一:
-----------------------
主表tb_client 与从表tb_contact是一对多的关系,即在从表中查询语句:
SELECT * FROM tb_contact WHERE client_id='27'
可以得到多条记录

说明部分二:
--------------------------
主表tb_client和从表tb_contact之关的部分关联数据通过关联表tb_link建立联系:
通过下面语句可以根据主表tb_client的主键查到从表中的相关记录:
SELECT t1.* FROM tb_contact AS t1, tb_link AS t2 WHERE t1.contact_id = t2.contact_id AND t2.client_id='27'

问题: 我现在需要用一条语句查出从表中与主表主键关联的记录, 同时要通过关联表中关联数据查出从表中相关的记录, 该怎么写. 我只想用一条语句,哪位高手指点一下!
即通过一条SQL语句查询出tb_contact中client_id为27的记录和通过关联表tb_link查询出的tb_contact中的第1条和第2条记录(它们在关联表tb_link中对应的client_id都为27)

论坛徽章:
0
2 [报告]
发表于 2005-11-09 19:58 |只看该作者
SELECT * FROM tb_contact WHERE client_id='27'
union
SELECT t1.* FROM tb_contact AS t1, tb_link AS t2 WHERE t1.contact_id = t2.contact_id AND t2.client_id='27'

不过 你发在 MYSQL 栏里,要是用MYSQL就搞不定。Order/DB2可以支持 Union 。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP