有三张表 
员工表(员工编号,姓名,性别,住址) 
公司表 (公司编号,公司名称,地址)
工作表(员工编号,公司编号,工作时间)
问下如何查询
既在A1公司工作又在A2公司工作的员工信息(A1,A2是公司名称)求高手

解决方案 »

  1.   

    select * from 员工表 a
    where exists(select 1 from 工作表 b inner join 公司表 c on c.公司编号=b.公司编号 and b.员工编号=a.员工编号 and c.公司名称='A1')
    and exists(select 1 from 工作表 b inner join 公司表 c on c.公司编号=b.公司编号 and b.员工编号=a.员工编号 c.公司名称='A2')
      

  2.   

    select a.员工编号,a.员工姓名
    from 员工表 a inner join 工作表 b on a.员工编号=b.员工编号
    inner join 公司表 c on b.公司编号=c.公司编号
    where c.公司名称 in('A1','A2')
    group by a.员工编号,a.员工姓名
    having COUNT(distinct b.公司编号)=2
      

  3.   


    select from 员工表 a where (select count(distinct 公司名称) from 工作表 t1 inner join 公司表 t2 on t1.公司编号=t2.公司编号 where 员工编号=a.员工编号 and 公司名称 in ('A1','A2'))=2
      

  4.   


    select t1.* from 员工表 t1 , 
    (
    select t1.* from 工作表 t1 , 公司表 t2 where t1.公司编号 = t2.公司编号 and t2.公司名称 = 'A1'
    ) t2,
    (
    select t1.* from 工作表 t1 , 公司表 t2 where t1.公司编号 = t2.公司编号 and t2.公司名称 = 'A2'
    ) t3
    where t1.员工编号 = t2.员工编号 and t1.员工编号 = t3.员工编号
      

  5.   

    --有三张表  
    --员工表(员工编号,姓名,性别,住址)  
    go
    if object_id('emp')is not null
    drop table emp
    go
    create table emp(
    empid varchar(10) primary key,
    empname varchar(20) not null,
    sex varchar(5) check(sex in('男','女')),
    addr varchar(50)
    )
    insert emp
    select 'EMP1001','张三','男','辽宁省大连市开发区' union all
    select 'EMP1002','李四','女','辽宁省大连市甘井子区'union all
    select 'EMP1003','王五','女','辽宁省大连市金州区'union all
    select 'EMP1004','刘能','男','辽宁省大连市保税区'union all
    select 'EMP1005','本三','男','辽宁省大连市中山区'
    --公司表 (公司编号,公司名称,地址)
    go
    if object_id('company')is not null
    drop table company 
    go
    create table company(
    companyid varchar(10) primary key,
    companyname varchar(30) not null,
    comaddr varchar(50)
    )
    go
    insert company
    select 'IOS200901','腾讯','辽宁省大连市高新区' union all
    select 'IOS200902','创维','辽宁省大连市中山区' union all
    select 'IOS200903','新浪','辽宁省大连市开发区' union all
    select 'IOS200904','阿里巴巴','辽宁省大连市高新区'
    --工作表(员工编号,公司编号,工作时间)
    go
    if object_id('empcompany')is not null
    drop table empcompany
    go
    create table empcompany(
    empid varchar(10) not null,
    companyid varchar(10) not null,
    dutytime varchar(20) not null
    )
    go
    insert empcompany
    select 'EMP1001','IOS200901','8:00到16:30'union all
    select 'EMP1002','IOS200902','8:00到16:30'union all
    select 'EMP1003','IOS200903','8:00到16:30'union all
    select 'EMP1004','IOS200904','8:00到16:30'union all
    select 'EMP1005','IOS200901','8:00到16:30'union all
    select 'EMP1001','IOS200902','8:00到16:30'union all
    select 'EMP1002','IOS200901','8:00到16:30'union all
    select 'EMP1003','IOS200904','8:00到16:30'
    --问下如何查询
    --既在A1公司工作又在A2公司工作的员工信息(A1,A2是公司名称)求高手select emp.empid,emp.empname from empcompany
    inner join emp on emp.empid=empcompany.empid
    inner join company on company.companyid= empcompany.companyid
    where company.companyname in('腾讯' ,'创维')
    group by emp.empid,emp.empname
    having count(distinct companyname)=2
    /*
    --结果表
    EMPID     EMPNAME
    EMP1001   张三
    EMP1002   李四
    */
      

  6.   

    select lable1.WORDno,emp.empname from 
    ((select *   from  WORD where WORDname ='A1') lable1 inner join 
    (select *  from  WORD where WORDname ='A2') lable2 on lable1.WORDno=lable2.WORDno) LEFT JOIN emp ON lable1.WORDno=emp.empno