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

Mysql怎样得到这样的结果?
area表:

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;




需要得到的数据:
-- ----------------------------
-- 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');




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