Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]如何才能简化这个查询?思路是否正确?

Bio_hebei  发表于:2010-09-25 15:41:52  
复制

一:建一个查询:一个表tblxlbx, 须同时取另外三个表(实际是4个)中的对应字段,主要条件是日期要求:小于等于tbllxbx bxnd(年度) bxyd(月度) 同时还要求其是这另外的三个表中的各自日期最大值(最近一次的值)

二:学生思路如例:先查符合条件的三个表的对应最大日期(查询A~C) ,再以这个日期最大值去求结果

三,问题:太过复杂,思路是否正确? 如何才能简化这个查询?

点击下载此附件

 

Top
红尘如烟 发表于:2010-09-25 16:09:55
没看明白你要实现的究竟是什么样的查询

Bio_hebei 发表于:2010-09-25 16:17:47

一,tblxlbx 报销  根据其报销年度、月度、品种 去查询 tbldj(供货价)(价格是动态调整的,取其调整日期小于等于 报销年度、月度 且日期最近的价格)

二,根据报销年度、月度、品种、客户去查询tbldesp(销售政策) (同上意思)

三,根据报销年度、月度、品种、客户去查询tblflxy(促销政策)  (同上意思)

 

期望结果:显示tblxlbx* ,tbldj.djId (以及tblpscs.pscsId),tbldesp.despId,tblflxy.flxyId



Bio_hebei 发表于:2010-09-26 01:29:36

发现自己发的例子中有个问题:

查询A~C中不该加各自备注中的条件

另外,个人想到的解决办法就是用子查询混合一下,但这个子查询做法比较困难,且查询有些繁杂冗长,首先是是否应当这样去做?

希望各位大侠可以提示思路



Bio_hebei 发表于:2010-09-26 01:37:21

还有一个想法就是:

一,就在备注中直接填上条件,以确保当前各分类结果唯一

二,定期为查询结果做个保存

(麻烦是:首先是须人为操作识别何时在各备注条件中去填写条件,其次是须增加保存的过程操作)

这个思路又如何呢?



红尘如烟 发表于:2010-09-26 13:07:11

SELECT *
FROM (SELECT (SELECT TOP 1 djid 
                         FROM tbldj 
                         WHERE pzid=tblxlbx.pzid AND Year(djrq)+Month(djrq)/12<=tblxlbx.bxnd+tblxlbx.bxyd/12 
                        ORDER BY djrq DESC
                        ) AS djid, 
                        * 
          FROM tblxlbx
           )  AS X INNER JOIN  tbldj ON  X.djid=tbldj.djId



Bio_hebei 发表于:2010-09-28 09:00:08

多谢来自红尘的如烟兄弟热心帮助,思路也已渐渐清淅

再次感谢!



总记录:6篇  页次:1/1 9 1 :