多表查询排序筛选问题
3个表:
bumen:
-----------------------------------------
| bm | bms |
-----------------------------------------
| 01 | 生产基地 |
-----------------------------------------
| 02 | 生产部 |
-----------------------------------------
| 03 | 办公室 |
-----------------------------------------
| 04 | 资材部 |
doc:
-------------------------------
| bh | xm | xb | bm |
---------------------------------
| 010001 | aaaa | 男 | 01 |
-------------------------------
| 010002 |bbbb | 女 | 01 |
---------------------------------
| 010044 | cccc | 男 | 01 |
-------------------------
| 010045 | dddd | 女 | 01 |
| 020008 |eeee | 男 | 02 |
----------------------------
| 010031 | ffffff | 男 | 02 |
------------------------------
| 020011 | ggggg | 女 | 02 |
----------------------------
| 020012 | eeeee | 男 | 02 |
-------------------------------
| 07006 | wwwww | 女 | 07 |
----------------------------
sfdata:
-------------------------
| bh | ye | rq |
-------------------------
| 010001 | 3000 | 20041012 |
-------------------------
| 010001 | 3000 | 20041012 |
-------------------------
| 010001 | 2970 | 20041014 |
-------------------------
| 010031 | 1700 | 20050323 |
-------------------------
| 010031 | 1400 | 20050323 |
-------------------------
| 010031 | 600 | 20050331 |
-------------------------
要实现的查询是:查出xm或bh对应的ye,要求rq最大的条件下ye最小
bh | xm | xb | bms | ye | rq
010001 |aaaa |男 | 生产基地|2970 |20041014
010031 |fffff |男 | 生产部 |600 |20041014
数据量挺大的,用的ACCESS数据库,我写的SQL:
select * from (select sfdata.bh,xm,xb,bms,ye,rq from bumen,doc,sfdata where bumen.bm=doc.bm and sfdata.bh=doc.bh order by sfdata.bh asc,rq desc,ye asc)
查不来的只是按要求排序了,并没有取出来每个编号的第一条记录,请问怎样消除重复的记录?
或者有更好的方法实现呢?
[解决办法]
select * from ((select * from sfdata a where rq=
(select top 1 rq from sfdata where bh=a.bh order by rq desc)) c
left join doc d on c.bh=d.bh)
left join bumen e on d.bm=e.bm