如何连接共享同一列的表?

时间:2014-06-04 19:19:43

标签: sql sql-server-2008

我制作了SQL Fiddle,我想要做的是使用departmentid加入这两个查询。

我想要展示的是departmentnamenot_approved_manager

在这种情况下,最好使用联合或加入吗?

表格

create table cserepux
(
   status int, 
   comment varchar(25),
   departmentid int,
   approveddate datetime 
);

insert into cserepux (status, comment, departmentid, approveddate)
values (1, 'testing1', 1, NULL), (1, 'testing2', 1, NULL),
       (1, 'testing2', 2, NULL), (0, 'testing2', 1, NULL),
       (0, 'tesitng2', 1, NULL), (0, 'testing2', 1, NULL),
       (0, 'tesitng2', 1, NULL), (0, 'testing3', 2, NULL),
       (0, 'testing3', 3, NULL);

create table cseDept 
(
    departmentid int, 
    department_name varchar(25)
);

insert into cseDept (departmentid,department_name)
values (1, 'department one'), (2, 'department two'),
       (3, 'department three'), (4, 'department four');

查询

select 
    departmentid, 
    COUNT(*) AS 'not_approved_manager'
from 
    cserepux
where 
    approveddate is null
group by 
    departmentid

SELECT * FROM cseDept

2 个答案:

答案 0 :(得分:3)

您需要加入。工会不会得到你想要的东西。

select d.department_name, COUNT(*) AS 'not_approved_manager'
from cserepux c
inner join cseDept d on c.departmentid = d.departmentid
where approveddate is null
group by d.department_name

答案 1 :(得分:1)

你需要一个加入和一个正确的小组

  select dep.department_name, COUNT(*) AS 'not_approved_manager'
  from cseDept dep
  join cserepux cs on cs.departmentid = dep.departmentid
  where approveddate is null
  group by dep.department_name

小提琴: http://sqlfiddle.com/#!3/5cf4e/30

由于加入 group by 是SQL中的基本内容,我建议你先看看一些教程,以便更加熟练地掌握它。您可以尝试SQL Server Central楼梯文章系列