两表关联,

jeetliang 2011-12-21 02:48:08
两表关联,
如T1 (DEPID,NAME)
1 张三
2 李四
阿五

,T2 (DEPID,DEPTNAME)

1 行政
2 财务
3 研发

1:通过DEPTID关联部门,还要放阿五,没有DEPID的也要显示这个人
...全文
87 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你说的那种情况:我测试的结果
1 张三 行政
2 李四 财务
NULL 阿五 NULL
1 王二 行政
2 tracy 财务
勿勿 2011-12-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jeetliang 的回复:]
没这个简单吧?当这个部门有好多人都是deptid=1 或2,就会出现很多重的
[/Quote]
出现多重的就是有一对多的情况,查清楚就好办
jeetliang 2011-12-21
  • 打赏
  • 举报
回复
没这个简单吧?当这个部门有好多人都是deptid=1 或2,就会出现很多重的
  • 打赏
  • 举报
回复
/*
两表关联:
如T1 (DEPID,NAME)
1 张三
2 李四
null 阿五

T2 (DEPID,DEPTNAME)

1 行政
2 财务
3 研发

1:通过DEPTID关联部门,还要放阿五,没有DEPID的也要显示这个人
*/
go
if object_id('T1')is not null
drop table T1
go
create table T1(
DEPID int,
NAME varchar(20)
)
insert T1
select 1,'张三' union all
select 2,'李四' union all
select null,'阿五'
select *from T1

go
if object_id('T2')is not null
drop table T2
go
create table T2(
DEPID int,
DEPARTNAME varchar(20)
)
go
insert T2
select 1,'行政' union all
select 2,'财务' union all
select 3,'研发'

select
T1.DEPID,T1.NAME,T2.DEPARTNAME
from
T1 left join T2 on T1.DEPID=T2.DEPID

/*
结果表:
DEPID NAME DEPARTNAME
1 张三 行政
2 李四 财务
NULL 阿五 NULL
*/
  • 打赏
  • 举报
回复
/*
不同的班有重名的人,同一个班没有重名的,班级和姓名是联合主键
--租借表
姓名 班级 性别 借书数量(int类型)
张三 一班 男 10
李四 二班 女 7
张三 二班 女 5
李四 一班 男 3

--归还表
姓名 班级 性别 还书数量(int类型)
张三 一班 男 9
'李四','二班','女',5
张三 二班 女 2
李四 一班 男 1

--查找现在所有人欠书本数为1-3本的且性别为女的查询结果
显示结果为:
姓名 班级 性别 仍欠数量
*/
--租借表
go
if object_id('租借表') is not null
drop table 租借表
go
create table 租借表(
姓名 varchar(20) not null,
班级 varchar(20) not null,
性别 varchar(5) check(性别 in('男','女')),
借书数量 int default 0
)
go
alter table 租借表 add constraint pk_name_class primary key(姓名,班级)
go
insert 租借表
select '张三','一班','男',10 union all
select '李四','二班','女',7 union all
select '张三','二班','女',5 union all
select '李四','一班','男',3
--归还表
go
if object_id('归还表') is not null
drop table 归还表
go
create table 归还表(
姓名 varchar(20) not null,
班级 varchar(20) not null,
性别 varchar(5) check(性别 in('男','女')),
还书数量 int default 0
)
go
alter table 归还表 add constraint pk_n_c primary key(姓名,班级)
go
insert 归还表
select '张三','一班','男',9 union all
select '李四','二班','女',5 union all
select '张三','二班','女',2 union all
select '李四','一班','男',1
select *from 归还表

--查找现在所有人欠书本数为1-3本的且性别为女的查询结果
--显示结果为:
--姓名 班级 性别 仍欠数量

select
租借表.姓名,租借表.班级,
租借表.性别,(租借表.借书数量-归还表.还书数量) as 仍欠数量
from
租借表 inner join 归还表
on
租借表.姓名=归还表.姓名 and 租借表.班级=归还表.班级
/*
--结果表
姓名 班级 性别 仍欠数量
李四 二班 女 2
李四 一班 男 2
张三 二班 女 3
张三 一班 男 1
*/

/*
两表关联:
如T1 (DEPID,NAME)
1 张三
2 李四
null 阿五

T2 (DEPID,DEPTNAME)

1 行政
2 财务
3 研发

1:通过DEPTID关联部门,还要放阿五,没有DEPID的也要显示这个人
*/
go
if object_id('T1')is not null
drop table T1
go
create table T1(
DEPID int,
NAME varchar(20)
)
insert T1
select 1,'张三' union all
select 2,'李四' union all
select null,'阿五'
select *from T1

go
if object_id('T2')is not null
drop table T2
go
create table T2(
DEPID int,
DEPARTNAME varchar(20)
)
go
insert T2
select 1,'行政' union all
select 2,'财务' union all
select 3,'研发'

select
T1.DEPID,T1.NAME,T2.DEPARTNAME
from
T1 left join T2 on T1.DEPID=T2.DEPID

/*
结果表:
DEPID NAME DEPARTNAME
1 张三 行政
2 李四 财务
NULL 阿五 NULL
*/
  • 打赏
  • 举报
回复
左连接查询

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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