超难度的问题:按条件查4个表(其中有的表中有些人的数据是没有的)输入到另一表里。

螺丝刀2000 2003-06-13 03:38:01
有 数据库表A,B,C,D, E

A表里有:序列号,姓名,性别,年龄等。
B表里有:序列号,报名费,手续费1,手续费2 等
C表里有:序列号,装修费1,装修费2,运费1,运费1,等
D表里有:序列号,退报名费,退手续费1,退手续费2,
退装修费1,退装修费1,退运费1,退运费2,等
E表里有(内容为空): ID(自动递增1的INT),序列号,姓名,性别,年龄,
报名费,手续费1,手续费2
装修费1,装修费2,运费1,运费1,
退报名费,退手续费1,退手续费2,
退装修费1,退装修费1,退运费1,退运费2,
报名费小计,手续费小计,装修费小计,运费小计,合计.

条件如下:
% 比如一个人的档案
% 在表A里的人的档案对来说在 B 或 C 或 D 表里面有些的没有记录。

报名费小计=(报名费-退报名费),
手续费小计=(手续费1+手续费2-退手续费1-退手续费1),
装修费小计=(装修费1+装修费2-退装修费1-退装修费2),
运费小计=(运费1+运费2-退运费1-退运费2)
合计= 报名费小计+手续费小计+装修费小计+运费小计

请问:如何在A,B,C,D表里按条件合计>2000元,查找符合条件的数据后
保存到E表里?
...全文
31 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
螺丝刀2000 2003-06-14
  • 打赏
  • 举报
回复
你们写的办法不行啊!
可能是我描述的不详细!
比如 在表A里 有5个人的记录(王一,李二,张三,刘丽,杨华)
B , C , D 表里面只有王一的记录。
B表里面有李二的记录
可是用你们的办法按条件查询的话只能查出每个表里都存在的 ”王一“ 的记录,
比如合计=<0 应该表A里的五个人都显示出来,
可是用你们的办法无法实现!
螺丝刀2000 2003-06-14
  • 打赏
  • 举报
回复
你们写的办法不行啊!
可能是我描述的不详细!
比如 在表A里 有5个人的记录(王一,李二,张三,刘丽,杨华)
B , C , D 表里面只有王一的记录。
B表里面有李二的记录
可是用你们的办法按条件查询的话只能查出每个表里都存在的 ”王一“ 的记录,
比如合计=<0只应该表A里的人都显示出来,
可是用你们的办法无法实现!

了缘 2003-06-14
  • 打赏
  • 举报
回复
insert into E (除id的字段列表)
select A.序列号,A.姓名,A.性别,A.年龄,H.报名费小计,H.手续费小计,R.装修费小计,
R.运费小计,
H.报名费小计+H.手续费小计+H.装修费小计+H.运费小计 as 合计
from A
left join
(select 序列号,报名费,手续费1,手续费2 ,退报名费,退手续费1,退手续费2,
报名费-退报名费 as 报名费小计,手续费1+手续费2-退手续费1-退手续费2 as
手续费小计
from B
left join D on B.序列号=D.序列号) as H
on A.序列号=H.序列号
left join
(select 序列号,装修费1,装修费2,运费1,运费2,退装修费2,退装修费1,退运费1,
退运费2,装修费1+装修费2-退装修费1-退装修费2 as 装修费小计,
运费1+运费2-退运费1-退运费2 as 运费小计
from C
left join D on C.序列号=D.序列号) as R
on A.序列号=R.序列号
WHERE (H.报名费小计+H.手续费小计+H.装修费小计+H.运费小计)>2000
了缘 2003-06-14
  • 打赏
  • 举报
回复
序列号是不是關鍵字啊
可不可以用來關聯啊
rdsdh 2003-06-14
  • 打赏
  • 举报
回复
Insert Into E(序列号,姓名,性别,年龄,
报名费,手续费1,手续费2
装修费1,装修费2,运费1,运费1,
退报名费,退手续费1,退手续费2,
退装修费1,退装修费1,退运费1,退运费2,
报名费小计,手续费小计,装修费小计,运费小计,合计)
Select A.序列号,姓名,性别,年龄,
isnull(报名费,0),isnull(手续费1,0),isnull(手续费2,0),
----以下也加上ISNULL,不写了--()------------------------
装修费1,装修费2,运费1,运费1,
退报名费,退手续费1,退手续费2,
退装修费1,退装修费1,退运费1,退运费2,
报名费小计=(报名费-退报名费),
手续费小计=(手续费1+手续费2-退手续费1-退手续费1),
装修费小计=(装修费1+装修费2-退装修费1-退装修费2),
运费小计=(运费1+运费2-退运费1-退运费2)
合计 = (报名费-退报名费)
+ (手续费1+手续费2-退手续费1-退手续费1)
+ (装修费1+装修费2-退装修费1-退装修费2)
+ (运费1+运费2-退运费1-退运费2)
From A left join B on A.序列号=B.序列号------>这里用左联接.
left join C on A.序列号=C.序列号
left join D on A.序列号=D.序列号
where (报名费-退报名费)
+ (手续费1+手续费2-退手续费1-退手续费1)
+ (装修费1+装修费2-退装修费1-退装修费2)
+ (运费1+运费2-退运费1-退运费2) >2000

愉快的登山者 2003-06-13
  • 打赏
  • 举报
回复
insert into E
select a.序列号, a.姓名, a.性别, a.年龄,
isnull(b.报名费,0), isnull(b.手续费1,0), isnull(b.手续费2,0),
isnull(c.装修费1,0),isnull(c.装修费2,0), isnull(c.运费1,0),isnull(c.运费1,0),
isnull(d.退报名费,0),isnull(d.退手续费1,0),isnull(退手续费2,0),isnull((d.退装修费1,0),isnull(d.退运费1,0),isnull(d.退运费2,0),
isnull(b.报名费,0)-isnull(d.退报名费,0) as 报名费小计,
isnull(b.手续费1,0)+isnull(b.手续费2,0)-isnull(d.退手续费1,0)-isnull(d.退手续费1,0) as 手续费小计,
isnull(c.装修费1,0)+isnull(装修费2,0)-isnull(d.退装修费1,0)-isnull(d.退装修费2,0) as 装修费小计,
isnull(c.运费1,0)+isnull(c.运费2,0)-isnull(d.退运费1,0)-isnull(退运费2,0) as 运费小计
from A left join b on A.序列号=B.序列号
left join c on A.序列号=C.序列号
left join d on A.序列号=d.序列号
where (isnull(b.报名费,0)-isnull(d.退报名费,0) +
isnull(b.手续费1,0)+isnull(b.手续费2,0)-isnull(d.退手续费1,0)-isnull(d.退手续费1,0)+
isnull(c.装修费1,0)+isnull(装修费2,0)-isnull(d.退装修费1,0)-isnull(d.退装修费2,0)+
isnull(c.运费1,0)+isnull(c.运费2,0)-isnull(d.退运费1,0)-isnull(退运费2,0))
>2000
joygxd 2003-06-13
  • 打赏
  • 举报
回复
insert into e
select 所需字段
from a left join b on a.序列号=b.序列号
left join c on a.序列号=c.序列号
left join d on a.序列号=d.序列号
where isnull(b.报名费,0)-isnull(d.退报名费,0)+isnull(b.手续费1,0)+
isnull(b.手续费2,0)-isnull(d.退手续费1,0)-isnull(d.退手续费2,0)+
isnull(c.装修费1,0)+isnull(c.装修费2,0)-isnull(d.退装修费1,0)-isnull(d.退装修费2,0)+
isnull(c.运费1,0)+isnull(c.运费2,0)-isnull(d.退运费1,0)-isnull(d.退运费2,0)>2000
happydreamer 2003-06-13
  • 打赏
  • 举报
回复
insert into E (除id的字段列表)
select * ,报名费小计+手续费小计+装修费小计+运费小计 as 合计from
(
select a.序列号, a.姓名,a.性别,a.年龄,isnull(b.报名费,0),isnull(手续费1,0),isnull(b.手续费2,0),isnull(c.装修费1,0),isnull(c.装修费2,0),isnull(c.运费1,0),isnull(c.运费1,0),isnull(d.退报名费,0),isnull(d.退手续费1,0),isnull(退手续费2,0),isnull((d.退装修费1,0),isnull(d.退运费1,0),isnull(d.退运费2,0),isnull(b.报名费,0)-isnull(d.退报名费,0) as 报名费小计,isnull(b.手续费1,0)+isnull(b.手续费2,0)-isnull(d.退手续费1,0)-isnull(d.退手续费1,0) as 手续费小计,isnull(c.装修费1,0)+isnull(装修费2,0)-isnull(d.退装修费1,0)-isnull(d.退装修费2,0) as 装修费小计,isnull(c.运费1,0)+isnull(c.运费2,0)-isnull(d.退运费1,0)-isnull(退运费2,0) as 运费小计
from A left join b on A.序列号=B.序列号
left join c on A.序列号=C.序列号
left join d on A.序列号=d.序列号

) a
where 报名费小计+手续费小计+装修费小计+运费小计>2000

22,294

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧