Table结构如下:
Tabel1:                      Table2
手机号码;                  手机号码
手机持有人姓名;            通话开始时间
通信地址;                  通话结束时间
。。                   通话时间
。。                   。在表1中手机号码对应表2中多条记录,怎样将同一个手机号码的通话情况打印在一张表上,做月结的,只要表1中有的手机号码都要打印?(我是将所有手机通话情况记在表2这一张表上,这样设计是不是有问题?如果当表1中增加一部手机就建一个表2的话这样可行吗?
我现在已经设计成上面两个表,有什么办法做到将同一个手机号码的通话情况打印在一张通话单上?

解决方案 »

  1.   

    表的结构确实没有问题,但是楼主,我有一个强烈的建议。就是表2中,你没有关键字。你的手机号码是不能作为关键字的,因为有重复。你可以在表2中再加一个no字段,这样才符合数据库的范式要求。因为按照数据库设计的要求,不符合规范的数据库在运行的时候恐怕有异常,而且维护是不太方便的。
     select * from 表2 where 手机号码=??and 月分=??
    这个语句不是可以实现查询查询某一个月某一个手机号码的所有情况了么??我觉得没有必要在表1中加一个手机号码就在表2中加一个记录,只有这个手机有通话记录时候才添加一条记录(最好为这个记录加一个唯一的记录号,每当无论那个手机有通话记录时候就让这个记录号自动加1) --个人建议
      

  2.   


    只打印月结,可以做好统计,每一条打印一张,
    打印明细,就用Sql的group by 分组,
      

  3.   

    两个表的结构已经很合理了.月结你可以这样求  select 手机号 sum(话费) from table2 where         
                             手机号=(select distinct 手机号 from table1)
                     and 通话开始时间 betwine(本月开始时间, 结束时间) 
                       group by  手机号
    然后把话单按照手机号撕开了发出去.
      

  4.   

    结构没问题,表1中手机号码为关键字,表2中为手机号码和开始时间(日期和时间),
    按月打印select table1 .手机号 sum(话费) from table1 inner join table2 on table1 .手机号=table2.手机号 where year(开始时间)=:year and month(开始时间)=:starttime group by table1 .手机号
      

  5.   

    结构没有什么问题,不过wojiaoliufeng(木喜)这位仁兄,说的也是有道理的,楼上的几位都很有见地!