免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1610 | 回复: 0

多对多关系数据表查询问题 [复制链接]

论坛徽章:
0
发表于 2006-02-15 16:34 |显示全部楼层
问题如下:
有主表: 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)
我的方法: 两条语句,用UNION合并数据集.
( SELECT * FROM tb_contact_manage WHERE client_id='5' && this_stat>0 ORDER BY contact_id DESC ) UNION ( SELECT t1.* FROM tb_contact_manage AS t1, tb_client_contact_link AS t2 WHERE t1.contact_id = t2.contact_id AND t2.client_id='5' ) LIMIT 0,8
秋水兄的方法: 用子查询
select contact_id from tb_client inner tb_client on (tb_link.client_id_id=tb_client.client_id) where tb_clent.client_id='5';


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/13306/showart_74988.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP