请问一个插入语句的写法
请教一个插入语句的写法
有四个表,一个员工表、一个A产品提成表、一个B产品提成表、一个工资核算表。 想把前三个表计算后显示在工资核算表里。请大家指导下小弟这个存储过程怎么写。另外还想问下有没有什么工具能可视化快速生成sql的代码工具吗?
员工表
姓名 底薪
张三 500
李四 600
A产品提成表
姓名 提成
张三 20
李四 30
张三 35
B产品提成表
姓名 提成
张三 28
李四 33
张三 40
工资核算表 (显示结果的表)
姓名 底薪 A产品提成 B产品提成
张三 500 55 68
李四 600 30 33
------解决思路----------------------
将员工表、一个A产品提成表、一个B产品提成表 信息插入到 工资核算表
insert into 工资核算表 (姓名, 底薪, A产品提成, B产品提成)
select A.姓名, A.底薪, B.提成 AS A产品提成, C.提成 AS B产品提成
from 员工表 A
inner join A产品提成表 AS B on A.姓名 = B.姓名
inner join B产品提成表 AS C on A.姓名 = C.姓名
通过查询语句显示结果:
select A.姓名, A.底薪, B.提成 AS A产品提成, C.提成 AS B产品提成
from 员工表 A
inner join A产品提成表 AS B on A.姓名 = B.姓名
inner join B产品提成表 AS C on A.姓名 = C.姓名
------解决思路----------------------
汗, 手打的代码,忘记求和了。。。。
------解决思路----------------------
插入数据:
------解决思路----------------------
------解决思路----------------------
你的表结构设计的有问题,不符合三大范式,建议修改一下
有四个表,一个员工表、一个A产品提成表、一个B产品提成表、一个工资核算表。 想把前三个表计算后显示在工资核算表里。请大家指导下小弟这个存储过程怎么写。另外还想问下有没有什么工具能可视化快速生成sql的代码工具吗?
员工表
姓名 底薪
张三 500
李四 600
A产品提成表
姓名 提成
张三 20
李四 30
张三 35
B产品提成表
姓名 提成
张三 28
李四 33
张三 40
工资核算表 (显示结果的表)
姓名 底薪 A产品提成 B产品提成
张三 500 55 68
李四 600 30 33
------解决思路----------------------
将员工表、一个A产品提成表、一个B产品提成表 信息插入到 工资核算表
insert into 工资核算表 (姓名, 底薪, A产品提成, B产品提成)
select A.姓名, A.底薪, B.提成 AS A产品提成, C.提成 AS B产品提成
from 员工表 A
inner join A产品提成表 AS B on A.姓名 = B.姓名
inner join B产品提成表 AS C on A.姓名 = C.姓名
通过查询语句显示结果:
select A.姓名, A.底薪, B.提成 AS A产品提成, C.提成 AS B产品提成
from 员工表 A
inner join A产品提成表 AS B on A.姓名 = B.姓名
inner join B产品提成表 AS C on A.姓名 = C.姓名
------解决思路----------------------
汗, 手打的代码,忘记求和了。。。。
select A.姓名, A.底薪, B.提成 AS A产品提成, C.提成 AS B产品提成
from 员工表 A
inner join (select 姓名, sum(提成) as 提成 from A产品提成表 group by 姓名) AS B on A.姓名 = B.姓名
inner join (select 姓名, sum(提成) as 提成 from B产品提成表 group by 姓名) AS C on A.姓名 = C.姓名
------解决思路----------------------
插入数据:
insert into 工资核算表 (姓名, 底薪, A产品提成, B产品提成)
select A.姓名, A.底薪, B.提成 AS A产品提成, C.提成 AS B产品提成
from 员工表 A
inner join (select 姓名, sum(提成) as 提成 from A产品提成表 group by 姓名) AS B on A.姓名 = B.姓名
inner join (select 姓名, sum(提成) as 提成 from B产品提成表 group by 姓名) AS C on A.姓名 = C.姓名
------解决思路----------------------
create table #员工表
(
姓名 varchar(20),
底薪 int
)
insert into #员工表
select '张三',500 union all
select '李四',600
create table #A产品提成表
(
姓名 varchar(20),
提成 int
)
insert into #A产品提成表
select '张三',20 union all
select '李四',30 union all
select '张三',35
create table #B产品提成表
(
姓名 varchar(20),
提成 int
)
insert into #B产品提成表
select '张三',28 union all
select '李四',33 union all
select '张三',40
select a.姓名,max(a.底薪) 底薪 ,sum(b.提成) A产品提成,sum(c.提成) B产品提成
from #员工表 a
join #A产品提成表 b on a.姓名=b.姓名
join #B产品提成表 c on a.姓名=c.姓名
group by a.姓名
/*
姓名 底薪 A产品提成 B产品提成
-------------------- ----------- ----------- -----------
李四 600 30 33
张三 500 110 136
(2 行受影响)
*/
------解决思路----------------------
你的表结构设计的有问题,不符合三大范式,建议修改一下
create table 提成表
(
姓名 varchar(20),
产品ID INT,
提成 int
)
create table 产品类型
(
产品ID int,
产品名称 varchar(20)
)