解决方案 »

  1.   

    select a.id, a.name, a.price, sum(c.num), sum(d.num) from a , b b1, b b2, c , d 
    where a.id = b1.aid and b1.id = c.bid and a.id = b2.aid and b2.id = d.bid
      

  2.   

    多谢回复!
    这种查询和JOIN合计出来的结果都会存在重复的合计
      

  3.   


    -- ----------------------------
    -- Table structure for `a`
    -- ----------------------------
    DROP TABLE IF EXISTS `a`;
    CREATE TABLE `a` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `name` varchar(20) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;-- ----------------------------
    -- Records of a
    -- ----------------------------
    INSERT INTO `a` VALUES ('1', 'aaaa');
    INSERT INTO `a` VALUES ('2', 'bbbb');
    INSERT INTO `a` VALUES ('3', 'ccccc');-- ----------------------------
    -- Table structure for `b`
    -- ----------------------------
    DROP TABLE IF EXISTS `b`;
    CREATE TABLE `b` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `aid` int(10) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;-- ----------------------------
    -- Records of b
    -- ----------------------------
    INSERT INTO `b` VALUES ('1', '1');
    INSERT INTO `b` VALUES ('2', '2');
    INSERT INTO `b` VALUES ('3', '3');-- ----------------------------
    -- Table structure for `c`
    -- ----------------------------
    DROP TABLE IF EXISTS `c`;
    CREATE TABLE `c` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `bid` int(10) DEFAULT NULL,
      `num` int(10) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;-- ----------------------------
    -- Records of c
    -- ----------------------------
    INSERT INTO `c` VALUES ('1', '1', '5');
    INSERT INTO `c` VALUES ('2', '2', '1');
    INSERT INTO `c` VALUES ('3', '3', '2');
    INSERT INTO `c` VALUES ('4', '1', '4');
    INSERT INTO `c` VALUES ('5', '3', '2');-- ----------------------------
    -- Table structure for `d`
    -- ----------------------------
    DROP TABLE IF EXISTS `d`;
    CREATE TABLE `d` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `bid` int(10) DEFAULT NULL,
      `num` int(10) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;-- ----------------------------
    -- Records of d
    -- ----------------------------
    INSERT INTO `d` VALUES ('1', '1', '1');
    INSERT INTO `d` VALUES ('2', '3', '2');
    INSERT INTO `d` VALUES ('3', '1', '1');
    INSERT INTO `d` VALUES ('4', '2', '4');
    INSERT INTO `d` VALUES ('5', '2', '1');试一下这个表结构。