问题如下:
有主表: 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_stat0 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';