首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Access >

多表查询排序筛选有关问题

2012-03-01 
多表查询排序筛选问题3个表:bumen:-----------------------------------------|bm|bms|------------------

多表查询排序筛选问题
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

热点排行