我有三张表:
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
长春公司 李四 意外伤害险 50000 100
武汉公司 王五 医疗保险 60000 150
武汉公司 赵六 医疗保险 70000 200
北京公司 钱七 两全保险 80000 200
(5 row(s) affected)
*/