两表关联,
  如T1 (DEPID,NAME)
  1  张三
  2  李四
     阿五  ,T2 (DEPID,DEPTNAME)        1   行政
        2   财务
        3  研发1:通过DEPTID关联部门,还要放阿五,没有DEPID的也要显示这个人

解决方案 »

  1.   

    /*
    不同的班有重名的人,同一个班没有重名的,班级和姓名是联合主键
    --租借表
    姓名 班级 性别 借书数量(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 T1go
    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
    */
      

  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 T1go
    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
    */
      

  3.   

    没这个简单吧?当这个部门有好多人都是deptid=1 或2,就会出现很多重的
      

  4.   

    你说的那种情况:我测试的结果
    1 张三 行政
    2 李四 财务
    NULL 阿五 NULL
    1 王二 行政
    2 tracy 财务