为一个广告公司做个软件,要求把一个月的内要上报的信息全报输入到数据库。然后那天有的那条信息要上报,一点按钮就能列出来。例如:3.16号要上报的,一点查询,所以3.16上的日期就出来。
现在的问题是:怎么把每条信息在输入时的日期问题?例如:“ABCD”这条信息要求3月16日、3月18日、3月20日、3月22日、3月25日这几天登在报纸上,怎么实现。我的想法是:在数据库中设31个字段作为每个月1号到31号的标志,查询的时候看这天的标志是否选上。现在关键的是要求,一点今天的日期就能知道今天有哪些要登报的。
因为有些广告,一个广告它在不同的日期会登报,如广告内容为“ABCDEFG”,它要求在3.15、3.17、3.21和3.25天登出,怎么实现日期的检索?
--------------------------------------------------------------------------
DelphiICQ编程站,至力于发展编程技术!http://www.DelphiICQ.com/

解决方案 »

  1.   

    我的建议:
        只需要设一个Char(31)字段,代表31天,如果第一天有,那么就在第一位设置为1,否则第一位设置为0,检索的时候用?做通配符检索。
      

  2.   

    设置31个字段?不需要!
    做成主子结构的表不就可以了吗!abcd这条信息存入数据库中应该有自己的唯一标识的id吧,在从表中,只要存这个id和日期不就可以了吗?
    to : yimoo(宝剑锋自磨砺出 梅花香自苦寒来) 
     我觉得用char(31)不好,看楼主的例子,日期不一定连续,如果出现跨月就麻烦了。
      

  3.   

    to : yimoo(宝剑锋自磨砺出 梅花香自苦寒来) 
        仔细看了一下楼主的问题,原来是要求一个月内的!那用你的应该没问题,只是不知道出现跨月和跨年时楼主的业务是怎样处理的,总觉得有些怪异,比如出现跨月,那abcd这条信息还要重输入一次?
      

  4.   

    想了半天,我还是觉得用主从结构比较好,因为一对多的关系大多数是用主从结构实现的。
    楼主的业务逻辑我觉得有问题(个人意见,别来板砖,^_^)比如有一条信息aaa在一年中需要上报12次,每月一次,那你怎么处理,录入12次?
      

  5.   

    TO: lywho(阿勇) 
      以你的意思,如果用从表,那么从表中的内容是ID+日期,例广告“ABCDE”如果出现5次,就应该在从表中显示出5次吗?
      

  6.   

    例如:ABCDE的ID为1,则从表中应该有如下记录
    1   2004.3.15
    1   2004.3.17
    1   2004.3.20是这个意思吗?
      

  7.   

    是这个意思,当这样做后,你的每日查询就可以这样做
    select a.信息 from 主表 a,子表 b where a.id=b.id and b.日期=实际日期
    这样,应在某日上报的信息就可以全部检索出来。
    而且当某种信息需长期上报也没问题。
    但要注意信息修改或删除时要考虑到从表。
      

  8.   

    好的,多谢你,你的方法不错,希望以后多多交流!
    --------------------------------------------------------------------------
    DelphiICQ编程站,至力于发展编程技术!http://www.DelphiICQ.com/