一个极其具有挑战性的问题!(1000分相送,不够再加)
一个极其具有挑战性的问题!(1000分相送,不够再加)
已知:有5种蛋糕,每种蛋糕每天的价格都有可能不相同,100个蛋糕店为这5种蛋糕提供价格。
提问:用何种方式知道某一段时间里面某种蛋糕的平均价最低的3个蛋糕店
提示:
可能的情况有:001号蛋糕店录入第1种蛋糕数据
蛋糕编号 价格 蛋糕店编号 时间段(按具体时间) 时间段(按周数)
001 5.2 098 2004-8-2,2004-8-3,2004-8-6
002 5.3 022 2004-9-9,2004-9-13,2004-10-6
001 5.7 031 2004-8-2,2004-9-1|5,6,7
001 5.9 016 2004-6-2,2004-12-1|5,6
001 5.2 051 2004-7-1
004 5.0 100 2004-8-2,2004-8-3,2004-8-6
001 5.2 078 2004-1-1,2004-12-31|5,6
001 5.2 051 2004-8-2,2004-8-3,2004-8-6,2004-8-7
时间短(按具体时间):就是可以录入具体某一天的时间,可以是30个日期或者更多
时间段(按周数) :就是根据某一个起止日期内的所有星期数
有什么办法知道以上数据在2004-8-1到2004-9-1这段时间内谁哪三个蛋糕店提供的价格(平均价)最低呢。目前已经知道如何去做,但是执行效率极其低下。
可以重新建立表,可以添加新的字段。
请各位不惜赐教。
msn: v2boy@msn.com
q q: 129071
问题点数:100、回复次数:30Top
1 楼alpha15(奥法)回复于 2004-09-02 02:28:33 得分 0
呵呵
还是先去睡觉
明天再来看Top
2 楼llhy(干活的狼)回复于 2004-09-02 08:13:37 得分 0
逻辑性好强呀!晕Top
3 楼pandengzhe(无为之为 之 混迹苍生)回复于 2004-09-02 08:15:12 得分 0
呵呵Top
4 楼llhy(干活的狼)回复于 2004-09-02 08:20:22 得分 0
呵呵,你记录这样保存应该是合理D!
原记录为1条:
001 5.2 098 2004-8-2,2004-8-3,2004-8-6
新记录为3条
001 5.2 098 2004-8-2
001 5.2 098 2004-8-3
001 5.2 098 2004-8-6
这样写SQL语句非常方便,剩下的我不说,你也应该知道怎么做了吧!Top
5 楼yangxiaolong(做梦发财)回复于 2004-09-02 08:22:09 得分 0
去问“亡灵法师”吧Top
6 楼Shires(Trombone)回复于 2004-09-02 08:24:56 得分 0
upTop
7 楼sqlchen(哈欠)回复于 2004-09-02 09:03:38 得分 0
洗洗,结贴把Top
8 楼cqhejun(雪人)回复于 2004-09-02 09:06:47 得分 0
帮顶,接分!Top
9 楼ghostwriter(写呀写)回复于 2004-09-02 09:10:02 得分 0
帮顶Top
10 楼2002pine(2002pine(深圳:msn:huangjinsong2002@hotmail.com))回复于 2004-09-02 09:14:12 得分 0
把
001 5.2 098 2004-8-2,2004-8-3,2004-8-6
分解为3条
001 5.2 098 2004-8-2
001 5.2 098 2004-8-3
001 5.2 098 2004-8-6
这样才能用数据库的优势.也很容易得出结论.
Top
11 楼v2boy(大格)回复于 2004-09-02 09:14:16 得分 0
Re:回复人: llhy(干活的狼) ( ) 信誉:100
原表是这么设计的,表结构不能修改的。Top
12 楼v2boy(大格)回复于 2004-09-02 09:14:37 得分 0
否则,要把整个系统全部修改!Top
13 楼workhand(我可憨了...)回复于 2004-09-02 09:15:16 得分 0
heheTop
14 楼v2boy(大格)回复于 2004-09-02 09:21:06 得分 0
如果有10000种产品,1年365天,1000个供应商提供每天的价格。如果按照各位老大的方法,数据库里面就会有 10000X365X1000 = 3650000000
那数据库里面,光价格就有36亿条记录,估计要老板要把数据库换大型机才能跑。
而上面我说的情况是有的。Top
15 楼v2boy(大格)回复于 2004-09-02 10:08:02 得分 0
时间段的日期2004-8-2,2004-8-3,2004-8-6表示这三天
周数表示:2004-8-2,2004-9-1|5,6,7 这一段时间2004-8-2到2004-9-1的所有星期5、6、日
Top
16 楼junmayang(笨猪)回复于 2004-09-02 10:23:30 得分 0
顶一下Top
17 楼llhy(干活的狼)回复于 2004-09-02 11:19:33 得分 0
那你只能使用笨方法啦,我那么是那你能使用上日期的索引,会很快的。
笨方法就是一条条找了。记住快速的方法就是使用使用数据库中的索引!Top
18 楼llhy(干活的狼)回复于 2004-09-02 11:21:17 得分 0
再说了数据设计也不是死的,你也可以按月份建立表呀Top
19 楼llhy(干活的狼)回复于 2004-09-02 11:38:40 得分 0
这样做,
第一:你应该给每一个店建立结构一样的表。这样可以减少表的记录数。这样记录数为:产品*天数
第二:然后数据就同我刚开始时讲的数据存储方式一样,就OK!
如果你的数据结构不能动,也没办法啦!Top
20 楼blueroc()回复于 2004-09-02 11:45:14 得分 0
upTop
21 楼v2boy(大格)回复于 2004-09-02 21:00:01 得分 0
各位大哥,给个建议,如果在不破坏现在的数据结构和程序的情况下,我该如何做。Top
22 楼v2boy(大格)回复于 2004-09-03 11:17:29 得分 0
非常感谢各位大大:基本上已经定为各位大大提供的三种意见
思路是这样的
1、首先,不修改目前数据表结果,新建一个表做为存放价格数据的临时表,主要是把日期格式化一下便于索引和统计
2、该表只能存放当天之后30天的数据记录
3、数据录入程序仍然按照以前的,然后在该数据录入的程序中添加一个 处理过程。(该过程:将当前价格信息格式化之后存放到刚才建立的临时表中)
4、查询和统计使用临时表,临时表中的小于当天的历史数据需要每天执行一个程序删除。
这种思路来源于
chump(木人)
http://community.csdn.net/Expert/topic/3331/3331690.xml?temp=.5929376
zjcxc(邹建) txlicenhe(马可)
http://community.csdn.net/Expert/topic/3331/3331687.xml?temp=.4018824
可惜我对维度不熟悉
另外有
windindance(风舞轻扬) ( ) liufuyahong() ( )
http://community.csdn.net/Expert/topic/3331/3331696.xml?temp=4.078311E-02
crankfe(crank)
http://community.csdn.net/Expert/topic/3331/3331688.xml?temp=.3809473
还有一下大大的我看的不是很懂,看上去好像非常不错
qimini(循序渐进) ( ) 信誉:106
http://community.csdn.net/Expert/topic/3331/3331688.xml?temp=.3809473
希望大大们综合一下,最终搞个结论出来,今天结贴。综合的好的,每人1000分。其余各献计献策的都有分送。谢谢各位的支持。
另外,惨痛的教训就是廉价的程序员和DBA会导致系统要用数百倍的价格来补偿。
Top
23 楼aspirerME(沙暖睡鸳鸯)回复于 2004-09-03 17:34:49 得分 0
upTop
24 楼zhangzzj1(巧雨)回复于 2004-09-03 17:47:22 得分 0
另外,惨痛的教训就是廉价的程序员和DBA会导致系统要用数百倍的价格来补偿。
>????Top
25 楼georgeqp(菜就一个字)回复于 2004-09-03 18:22:17 得分 0
up
Top
26 楼qimini(循序渐进)回复于 2004-09-14 16:04:54 得分 5
~~~~Top
27 楼javahou(岩珂)回复于 2004-09-14 16:10:28 得分 5
upTop
28 楼zjcxc(邹建)回复于 2004-09-14 18:14:07 得分 90
接分,原因
http://community.csdn.net/Expert/topic/3331/3331687.xml?temp=.4018824Top
29 楼MyNetworks(弟大物勃)回复于 2004-09-14 18:15:35 得分 0
同楼上Top
30 楼yellowstrong(越堕落越快乐!)回复于 2004-09-14 18:20:31 得分 0
厉害Top




