日期:2014-05-16  浏览次数:20656 次

Mysql关于复杂条件查询的问题
是这样的,比如我现在有一张表house,里面记录了房号houseid,租金rent(固定值),usearea面积, remark标记为1表示rent为0。


第二张表是charge表,字段有hid(房号),sfqj(记录的是哪户人几几年几几月的缴费信息,格式就是201201)。


第三张表是project表,字段有projectid,project(表示缴费的项目,比如租金,设施费(根据house表的面积算))等。


现在的我根据需求设计了另一张表qfb,记录欠费信息,字段有hid,remark,projectid,project,Jan~Dec(需要算每个月的欠费记录)、

然后就是怎么根据上面的三个表查出欠费信息再插入qfb? (一个人应该每次插入2条记录(2个缴费项目))

我的想法是,根据house表查出houseid ,rent, remark在charge表里根据对应的houseid 对应 hid查出这个人是否缴费了,假如他的缴费信息只有201112的租金,没有缴设施费,那么前11个月租金就是欠费,把结果插入qfb表,1~11月欠费项目租金就是他面积应交的rent,12月不插入信息,表示未欠费. 1~12月的设施费就是全欠,全部插入(面积*设施费)表示12个月都欠。


感觉好难啊,写不出来,哪个高手可以帮帮忙?

------解决方案--------------------
描述的字太多了。



建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
 
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
 
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。


------解决方案--------------------
流程应该这样吧:

遍历house表,遍历到第一条,就拿第一条的houseid放到project表里查他应该交的费用的projectid号,同时把金额算出来,

然后根据这个结果再放到charge表查有无他的信息,如果一条都没,那么插入欠费表,全部欠费。

有记录就根据条件过滤,比如他交几月的,交的什么费。

然后再把结果插入欠费表,

大循环结束.

然后再去house表里遍历第二条

...