表结构如下:--基本信息表
CREATE TABLE `sh_jbxx` (
  `SHID` varchar(20) NOT NULL COMMENT '商户id',
  `SHBH` char(15) DEFAULT NULL COMMENT '商户编号',
   `SFZD` char(1) DEFAULT NULL COMMENT '是否总店',
  `ZDSHID` varchar(28) DEFAULT NULL COMMENT '总店商户编号',
  PRIMARY KEY (`SHID`),
  KEY `SHBH` (`SHBH`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--消费信息表
CREATE TABLE `kgl_jfkxfdz` (
  `ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `JYRQ` date DEFAULT NULL COMMENT '交易日期',
  `JYSJ` time DEFAULT NULL COMMENT '交易时间',
  `SHBH` varchar(32) DEFAULT NULL COMMENT '商户编号',
  `JYJE` decimal(12,2) DEFAULT NULL COMMENT '交易金额', 
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8;
--商户与POS机关系表(一对多的关系-->一个商户可能有几台POS机)
CREATE TABLE `zd_terminal` (
  `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `SHID` varchar(20) DEFAULT NULL COMMENT '商户ID',
  `SHBH` varchar(20) DEFAULT NULL COMMENT '商户编号',
  `ZDH` char(20) DEFAULT NULL COMMENT '终端号',
  PRIMARY KEY (`ID`),
  KEY `FK_SHID` (`SHID`),
  CONSTRAINT `FK_SHID` FOREIGN KEY (`SHID`) REFERENCES `sh_jbxx` (`SHID`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
要实现的业务:在基本信息表中SHID是唯一的,每一个店都会有一个SHID,而SHBH是唯一,但是在连锁店中,只有总店才会有SHBH,分店没有SHBH,分店的SHBH同样是使用总店的商户编号;每一个店里都会有一个或多个POS机,每一台POS机会有一个唯一的终端号,用户在使用POS机刷卡消费时,会记录下每一笔交易记录,交易信息保存在消费信息表中;在基本信息表中,还有一个字段(SFZD)用于标识该商户是否是总店,如果是分店的话,则字段(ZDSHID)用于记录该分店所属的总店的SHID;
遇到的问题:
确定某一个总店商户,统计出该商户下面各分店的消费交易总额,SQL语句不怎么要怎么写,另外不知道这样的表结构构建是否合理?

解决方案 »

  1.   

       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式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)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。