是这样的,比如我现在有一张表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个月都欠。
感觉好难啊,写不出来,哪个高手可以帮帮忙?
解决方案 »
- 数据库连接成功后遇到的问题
- 现在大型点的应用中,mysql主从复制应用挺多的,请教:主从复制中不可避免的由于延迟导致的业务逻辑问题,大家如何处理的?
- 查询乱码的问题
- 表字段的类型设置
- 小妹请教前辈存储中文字乱码问题!
- MYSQL中怎么用sql脚本建立TIMESTAMP??急的很
- postgresql中如何写判断一个数据库或表是否存的SQL语句?
- 什么地方可以下载MYSQL在WINDOWS下的源代码?
- my.ini优化求助
- 项目是连接的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 ;