是这样的,比如我现在有一张表house,里面记录了房号houseid,租金rent(固定值),usearea面积, re标记为1表示rent为0。
第二张表是charge表,字段有hid(房号),sfqj(记录的是哪户人几几年几几月的缴费信息,格式就是201201)。
第三张表是project表,字段有projectid,project(表示缴费的项目,比如租金,设施费(根据house表的面积算))等。
现在的我根据需求设计了另一张表qfb,记录欠费信息,字段有hid,re,projectid,project,Jan~Dec(需要算每个月的欠费记录)、然后就是怎么根据上面的三个表查出欠费信息再插入qfb? (一个人应该每次插入2条记录(2个缴费项目))我的想法是,根据house表查出houseid ,rent, re在charge表里根据对应的houseid 对应 hid查出这个人是否缴费了,假如他的缴费信息只有201112的租金,没有缴设施费,那么前11个月租金就是欠费,把结果插入qfb表,1~11月欠费项目租金就是他面积应交的rent,12月不插入信息,表示未欠费. 1~12月的设施费就是全欠,全部插入(面积*设施费)表示12个月都欠。
感觉好难啊,写不出来,哪个高手可以帮帮忙?
第二张表是charge表,字段有hid(房号),sfqj(记录的是哪户人几几年几几月的缴费信息,格式就是201201)。
第三张表是project表,字段有projectid,project(表示缴费的项目,比如租金,设施费(根据house表的面积算))等。
现在的我根据需求设计了另一张表qfb,记录欠费信息,字段有hid,re,projectid,project,Jan~Dec(需要算每个月的欠费记录)、然后就是怎么根据上面的三个表查出欠费信息再插入qfb? (一个人应该每次插入2条记录(2个缴费项目))我的想法是,根据house表查出houseid ,rent, re在charge表里根据对应的houseid 对应 hid查出这个人是否缴费了,假如他的缴费信息只有201112的租金,没有缴设施费,那么前11个月租金就是欠费,把结果插入qfb表,1~11月欠费项目租金就是他面积应交的rent,12月不插入信息,表示未欠费. 1~12月的设施费就是全欠,全部插入(面积*设施费)表示12个月都欠。
感觉好难啊,写不出来,哪个高手可以帮帮忙?
解决方案 »
- 用VB去调用存储过程的问题
- mysql max()
- mysql 临时表限制
- 一个很复杂的调查问卷数据库设计
- postgresql数据库之间如何连接?如何传递数据?
- Mysql GUI Tools连接问题?
- int 和bigint差别有多大?
- 在关系数据库存储混合数据的解决方案
- ERROR: Error in Log_event::read_log_event(): 'read error', data_len: 438, event
- 急!delphi+mysql(mysql是远程的)的程序打包时要把哪些东西一起打包?
- 一直不明白的问题,怎么设置MYSQL的数据库目录存放在不同的目录或不同的分区下
- 我用mysql建不起表
参考一下这个贴子的提问方式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)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
DROP TABLE IF EXISTS `area`;
CREATE TABLE `area` (
`rowid` int(11) NOT NULL auto_increment,
`areaname` varchar(30) default NULL,
PRIMARY KEY (`rowid`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
INSERT INTO `area` VALUES ('1', 'CSDN社区');house表:
DROP TABLE IF EXISTS `house`;
CREATE TABLE `house` (
`rowid` bigint(20) NOT NULL auto_increment,
`houseid` varchar(20) default NULL,
`fzname` varchar(20) default NULL,
`usearea` varchar(10) default NULL,
`houproperties` char(1) default NULL COMMENT '0-公1-私', /* 私没有房租 */
`rent` decimal(16,2) default NULL,
`sfyid` bigint(20) default NULL,
`areaid` int(11) default NULL,
PRIMARY KEY (`rowid`)
) ENGINE=InnoDB AUTO_INCREMENT=2670 DEFAULT CHARSET=utf8;INSERT INTO `house` VALUES ('1', '1-1-1', '李四', '42.25', '0', '77.70', null, '', '2');charge表DROP TABLE IF EXISTS `charge`;
CREATE TABLE `charge` (
`rowid` bigint(20) NOT NULL auto_increment,
`areaid` bigint(20) default NULL,
`hid` varchar(20) default NULL,
`sfqj` varchar(6) default NULL,
`project` char(4) default NULL,
`jcsf` char(1) default NULL,
`jfje` decimal(16,2) default NULL,
PRIMARY KEY (`rowid`)
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8;INSERT INTO `charge` VALUES ('1', '1', '1-1-1', '201106', '1001', '0','77.70');project表DROP TABLE IF EXISTS `project`;
CREATE TABLE `project` (
`projectid` char(4) NOT NULL,
`project` varchar(20) default NULL,
`price` decimal(16,2) default NULL,
`jcsf` char(1) default NULL,
PRIMARY KEY (`projectid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `project` VALUES ('1001', '房租', '0.00', '0');
INSERT INTO `project` VALUES ('1002', '设施费', '0.18', '2');
INSERT INTO `project` VALUES ('1003', '卫生费', '6.00', '1');现在又建立了这样的表,根据上面三个表,查询数据插入到这个表里。
DROP TABLE IF EXISTS `qftjb`;
CREATE TABLE `qftjb` (
`rowid` int(11) NOT NULL auto_increment,
`areaname` varchar(30) default NULL,
`hid` varchar(20) default NULL,
`fzname` varchar(20) default NULL,
`houproperties` char(1) default NULL COMMENT '0-公1-私',
`projectid` char(4) default NULL,
`project` varchar(20) default NULL,
`Jan` decimal(16,2) default NULL,
`Feb` decimal(16,2) default NULL,
`Mar` decimal(16,2) default NULL,
`Apr` decimal(16,2) default NULL,
`May` decimal(16,2) default NULL,
`Jun` decimal(16,2) default NULL,
`Jul` decimal(16,2) default NULL,
`Aug` decimal(16,2) default NULL,
`Sep` decimal(16,2) default NULL,
`Oct` decimal(16,2) default NULL,
`Nov` decimal(16,2) default NULL,
`Dec` decimal(16,2) default NULL,
PRIMARY KEY (`rowid`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
我的想法是,在house表查出所有人的houseid ,rent, houproperties,然后在charge表里根据对应的houseid 对应 hid查出这个人是否有缴费信息,缴了哪些项目,假如他的缴费信息只有201112的租金,没有缴设施费,那么前11个月租金就是欠费,把结果插入qftjb表,1~11月欠费项目租金就是他面积应交的rent,12月不插入信息,表示未欠费. 1~12月的设施费就是全欠,全部插入(面积*设施费)这个值
比如是这样的数据:-- ----------------------------
-- Records of qftjb
-- ----------------------------
INSERT INTO `qftjb` VALUES ('1', 'CSDN社区', '1-1-1', '李四', '公', '1001', '房租', '77.70', '77.70', '77.70', '77.70', '77.70',null,'77.70','77.70','77.70','77.70','77.70','77.70');
INSERT INTO `qftjb` VALUES ('2', 'CSDN社区', '1-1-1', '李四', '公', '1003', '卫生费', '6.00', '6.00', '6.00', '6.00', '6.00', '6.00','6.00','6.00','6.00','6.00','6.00','6.00','6.00');
多复制了一个6.00
INSERT INTO `qftjb` VALUES ('2', 'CSDN社区', '1-1-1', '李四', '公', '1003', '卫生费', '6.00', '6.00', '6.00', '6.00', '6.00', '6.00','6.00','6.00','6.00','6.00','6.00','6.00');
select a.areaname,h.fzname,c.areaid,c.hid,c.project,c.jfje,if (h.houproperties='1',"公","私") as houproperties ,CONCAT(SUBSTR(c.sfqj,5),'月')as sfrq , c.sfyid from (charge c LEFT JOIN house h ON c.hid=h.houseid)LEFT JOIN project p ON c.project=p.projectid LEFT JOIN area a ON a.rowid=c.areaid ;