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

在线等sql代码
我有三张表:
1、个人保费表a:
管理代码   投保人姓名  险种代码  保费总额   基本保费
112 张三 001  50000 100
112 李四 001  50000 100
113 王五 002  60000 150
113 赵六 002  70000 200
114 钱七 003  80000 200

2、管理机构表b:
管理代码    管理机构
112     长春公司
113     武汉公司
114     北京公司

3、险种代码表c:
险种代码     险种名称
001          意外伤害险
002      医疗保险
003      两全保险

要求:通过sql语句得到下面的结果

管理机构  投保人姓名    险种名称   保费总额    基本保费
长春公司   张三        意外伤害险  50000    100
长春公司   李四        意外伤害险  50000    100
武汉公司   王五 医疗保险  60000    150
武汉公司   赵六         医疗保险  70000    200
北京公司   钱七         两全保险       80000    200

为什么我使用下面的SQL语句查询出来的不是我想要的结果,出来了好多行。
select b.管理机构, a.投保人姓名, c.险种名称, a.保费总额, a.基本保费
from a, b, c
where a.管理代码 = b.管理代码 and a.险种代码 =c.险种代码

请大师指点,谢谢。
------解决方案--------------------

create table 个人保费表
(管理代码 int,投保人姓名 varchar(10),险种代码 varchar(10),保费总额 int,基本保费 int)

insert into 个人保费表
 select 112,'张三','001',50000,100 union all
 select 112,'李四','001',50000,100 union all
 select 113,'王五','002',60000,150 union all
 select 113,'赵六','002',70000,200 union all
 select 114,'钱七','003',80000,200

create table 管理机构表
(管理代码 int,管理机构 varchar(20))

insert into 管理机构表
 select 112,'长春公司' union all
 select 113,'武汉公司' union all
 select 114,'北京公司'

create table 险种代码表
(险种代码 varchar(10),险种名称 varchar(20))

insert into 险种代码表
 select '001','意外伤害险' union all
 select '002','医疗保险' union all
 select '003','两全保险'


select b.管理机构,a.投保人姓名,c.险种名称,a.保费总额,a.基本保费
 from 个人保费表 a
 left join 管理机构表 b on a.管理代码=b.管理代码
 left join 险种代码表 c on a.险种代码=c.险种代码

/*
管理机构                 投保人姓名      险种名称                 保费总额        基本保费
-------------------- ---------- -------------------- ----------- -----------
长春公司                 张三         意外伤害险                50000       100
长春公司                 李四         意外伤害险