2014-09-18 3 views
0

У меня есть две таблицы. Один из них содержит сотрудников и тех, которые содержат проекты. Таблица сотрудников имеет первичный ключ, а проекты имеют внешний ключ для определения того, какой сотрудник работает над каким проектом. Мне нужно написать запрос, который будет возвращать имя и фамилию сотрудника, но только для тех сотрудников, которые работают с двумя или более проектами. Это то, что я до сих пор:Мне нужна помощь в создании запроса на sql, который

create table employee 
(
employeeId int not null identity(1,1) primary key, 
firstName varChar(25) not null, 
lastName varChar(25) not null, 
gender varChar(1) not null, 
dob date not null, 
ssn varChar(9) not null, 
) 

insert into employee 
values 
    ('Peter','Smith','m','1979-08-25','123112233'), 
    ('Juan','Doe','m','1985-05-22','435678907'), 
    ('Rafael','Perez','m','1979-03-22','754984568' 

create table projects 
(
projectId int identity(1,1) primary key not null, 
description varChar(100) not null, 
status varChar(10) not null, 
startDate date not null, 
projectedEndDate date not null, 
manager int foreign key references employee(employeeId) 

)

insert into projects 
values ('this project will improve the power on certain devices','active','2014-09-12','2015-0101','1'), 
    ('this project will improve the user interface','active','2014-09-12','2015-01-01','1'), 
    ('this project will improve the load time','active','2014-09-12','2015-01-01','2'), 
    ('this project will implement stronger security','active','2014-09-12','2015-01-01','2') 

    select firstname +' '+ lastname as fullname 
    from projects 
    inner join employee 
    on employee.employeeid = projects.manager 

который возвращает

Peter Smith 
Peter Smith 
Juan Doe 
Juan Doe 
Rafael Perez 

Я прочитал использовать счетчик, но не смогли реализовать присоединиться граф, застрял на этом некоторое время.

ответ

1

Вы хотите group by и having пункт:

select firstname +' '+ lastname as fullname 
from projects inner join 
    employee 
    on employee.employeeid = projects.manager 
group by firstname +' '+ lastname 
having count(*) >= 2; 
0

Вы всегда можете обернуть вы SQL:

SELECT fullname FROM (
    select firstname +' '+ lastname as fullname 
    from projects 
    inner join employee 
    on employee.employeeid = projects.manager) t 
GROUP BY fullname 
HAVING COUNT(distinct projectId) > 1 
Смежные вопросы