日期:2014-05-18  浏览次数:20676 次

求教成对匹配数据查询问题
假设存在表Worker
字段 workder_id,name,worker_mate_id,worker_mate_name
   
分别表示:工人Id,姓名,同事Id,同事姓名。
并假设每个工人只有一个同事

如果数据如下:
1,张三,3,李四
2,王五,4,赵六
3,李四,1,张三
4,赵六,2,王五


希望查询到如下结果:
1,张三,3,李四
3,李四,1,张三
2,王五,4,赵六
4,赵六,2,王五

即属于一个车间的工人相邻列出。应该如何查询呢?
不能回答的别顶,谢谢合作。
谢谢

------解决方案--------------------
SQL code
declare @a table(workder_id int,name varchar(20),worker_mate_id int,worker_mate_name  varchar(20))
insert @a select 1,'张三',3,'李四' 
union all select 2,'王五',4,'赵六' 
union all select 3,'李四',1,'张三' 
union all select 4,'赵六',2,'王五' 
 '' th

------解决方案--------------------
--好委屈
select * from worker a where exists(select 0 from worker b where a.workder_id=b.worker_mate_id)
order by (case when workder_id>worker_mate_id then worker_mate_id else workder_id end)
----------------------------
workder_id name worker_mate_id worker_mate_name 
----------- ---------- -------------- ---------------- 
1 张三 3 李四
3 李四 1 张三
4 赵六 2 王五
2 王五 4 赵六