导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

这个sql 语句该如何写???

msony 2003-12-27 02:29:49
我有四个表
资料表
代码 姓名 类别
1 .. 2
2 .. 4
3 .. 4
4 .. 4
5 .. 2

类别表
类别 金额
1 ..
2 ..
3
4

出勤表
代码 出勤天数
2 3
5 1


缺勤表
代码 缺勤天数
1 4

如何把这四个表连接在一起如
代码 姓名 类别 金额 出勤天数 缺勤天数
1 ... 2 .. 0 4
2 ... 4 .. 3 0
3 4 0 0
4 4 0 0
5 2 1 0





...全文
7 点赞 收藏 12
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
victorycyz 2003-12-28

select a.*,
isnull(金额,0) 金额,
isnull(出勤天数,0) 出勤天数,
isnull(缺勤天数,0) 缺勤天数
from 资料表 a left join 类别表 b on a.代码=b.代码
left join 出勤表 c on a.代码=c.代码
left join 缺勤表 d on a.代码=d.代码
回复
erigido 2003-12-27
select *
,金额=(select sum(金额) from 类别表 where 类别=a.类别)
,出勤天数=isnull((select sum(出勤天数) from 出勤表 where 代码=a.代码),0)
,缺勤天数=isnull((select sum(缺勤天数) from 缺勤表 where 代码=a.代码),0)
from 资料表 a
回复
hglhyy 2003-12-27
try!
回复
select *
,金额=(select sum(金额) from 类别表 where 类别=a.类别)
,出勤天数=isnull((select sum(出勤天数) from 出勤表 where 代码=a.代码),0)
,缺勤天数=isnull((select sum(缺勤天数) from 缺勤表 where 代码=a.代码),0)
from 资料表 a
回复
msony 2003-12-27
不过我把你的语句改了一下, 就行了.

SELECT 资料表.代码 资料表.姓名 资料表.类别 类别表.金额 出勤表.出勤天数 缺勤表.缺勤天数 FROM 资料表 FULL JOIN 类别表 ON 类别表.类别 = 资料表.类别 FULL
JOIN 出勤表 ON 出勤表.代码 = 资料表.代码 FULL JOIN 缺勤表.代码 = 资料表.代码

谢谢你,,给分!
回复
北京菠菜 2003-12-27
怎么不完整,说清楚啊
回复
msony 2003-12-27
不行呀 记录不完整。 是不是要用 full join 等其它的连接,,才能达到上述效果
回复
北京菠菜 2003-12-27
SELECT 资料表.代码 资料表.姓名 资料表.类别 类别表.金额 出勤表.出勤天数 缺勤表.缺勤天数 FROM 资料表 INNER JOIN 类别表 ON 类别表.类别 = 资料表.类别 INNER
JOIN 出勤表 ON 出勤表.代码 = 资料表.代码 INNER JOIN 缺勤表.代码 = 资料表.代码
回复
kevin218 2003-12-27
这样肯定没问题,快试试吧
回复
kevin218 2003-12-27
最基本的主外键连接,注意写明属主。见下面所示:

select a.代码, a.姓名,a.类别,b.金额,c.出勤天数,d.缺勤天数
from 资料表 a,类别表 b,出勤表 c,缺勤表 d
where a.代码 = c.代码 and
a.代码 = d.代码 and
a.类别 = b.类别
回复
msony 2003-12-27
大哥这样不行呀,, 有些记录就显示不出来了。 因为有些记录出勤表和缺勤表里没有。
回复
超人汪 2003-12-27
select 姓名,类别,金额,出勤天数,缺勤天数 from 资料表,类别表,出勤表,缺勤表
where 资料表.代码=出勤表.代码 and 资料表.类别=类别表.类别
and 资料表.代码=出勤表.代码 and 缺勤表.代码=资料表.代码
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告