财务报表:序号 用户名 姓名 续费(元) 赠送(元) 保证金(元) 注册费(元) IP地址费(元) 使用费(元)0 wsz xiaobai 60 10 0 0 50 201 bbb zhangs 50 0 0 0 30 100
表A以下字段:user(登录名)
name(姓名)-----------------------------表B有以下3个字段:type:(分5个类型:续费、赠送、保证金、注册费、IP地址费 ,根据不同的情况type的值就不同)savingnum(续费)user(登录名)time----------------------------
表C有以下字段:
user(登录名)charge1(使用费)time----------------------------表D有以下字段:
user(登录名)charge2(使用费)
time关联:这四个表的user是相等的,而且在各表中是唯一存在的。
注意:是报表,查出的值,都是某范围内的某字段的‘和’
每条记录中的使用费,如果在D表中值非空,那么就在C表中为0;如果在C表中值非0,那就不存在D表中。问题:1 查询:在某条件时间($star_time<=time<=$end_time)内,找出某一范围的续费($star_savingnum<=savingnum<=$end_savingnum)2 查询:在某条件时间($star_time<=time<=$end_time)内,找出某一范围的使用费($star_savingnum<=savingnum<=$end_savingnum)
表A以下字段:user(登录名)
name(姓名)-----------------------------表B有以下3个字段:type:(分5个类型:续费、赠送、保证金、注册费、IP地址费 ,根据不同的情况type的值就不同)savingnum(续费)user(登录名)time----------------------------
表C有以下字段:
user(登录名)charge1(使用费)time----------------------------表D有以下字段:
user(登录名)charge2(使用费)
time关联:这四个表的user是相等的,而且在各表中是唯一存在的。
注意:是报表,查出的值,都是某范围内的某字段的‘和’
每条记录中的使用费,如果在D表中值非空,那么就在C表中为0;如果在C表中值非0,那就不存在D表中。问题:1 查询:在某条件时间($star_time<=time<=$end_time)内,找出某一范围的续费($star_savingnum<=savingnum<=$end_savingnum)2 查询:在某条件时间($star_time<=time<=$end_time)内,找出某一范围的使用费($star_savingnum<=savingnum<=$end_savingnum)
不适合用sql语句来实现了.
1 表B type:(分5个类型:续费、赠送、保证金、注册费、IP地址费),类型的结构设置,对统计本身就有影响.要么取所有用户的某种续费类型做统计,要么取单个用户的所有类型做统计,这个可以通过group by 来实现.2 C和D表结构基本上是相同的,不知道你所谓的(如果在D表中值非空,那么就在C表中为0;如果在C表中值非0,那就不存在D表中)是何解.
如果某个用户在C表中有值又在D表中有值,哪就人为增加了难度.
SUM(B.savingnum) as saving_num,
A.user as username,
SUM(C.charge1) as charge1,
SUM(D.charge2) as charge2
FROM B LEFT JOIN A ON B.user=A.username
LEFT JOIN C ON C.user=A.username
LEFT JOIN D ON D.user=A.username
WHERE ".$where." GROUP BY user_saving.user_login_name ".$where9."$where='时间条件......' $where9=($charge_start != 0) ? " HAVING charge1 >= ".$charge_start:"";
$where9.=($charge_end != 0) ? " AND charge1 <= ".$charge_end:"";
$where9=($charge_start != 0) ? " HAVING charge2 >= ".$charge_start:"";
$where9.=($charge_end != 0) ? " AND charge2 <= ".$charge_end:"";
这是在某时间内,使用费用的查询。我这语句是错误的,只提供大家看。然后改