2014-03-02 50 views
-3

表1包括雇员的姓名和它们的缩写 表2包括projectnumber和pmember(缩写为好)显示从事所有项目的所有员工?

我们只需要显示员工的名字,所以我不得不使用WHERE子句,我不能构建:(这是我到目前为止已经完成。它只返回1名员工(正确答案是2名)

select t1.name 
from t1 
where t1.initials IN (select t2.pmember 
        from t2 
        having count(t2.projectnumber) > 1) 

在此先感谢!

+0

为什么要使用'having' ?如果您使用它,您必须拥有一个由 – agim

+0

'具有count(t2.projectnumber)> 1'的组? –

+0

你想做什么? – kiks73

回答

0

要显示所有项目的所有工作EMP,你需要这样一个独特的计数,我认为:

SELECT NAME FROM T1 WHERE INITIALS IN ( 
     SELECT PMEMBER FROM T2 HAVING DISTINCT COUNT(PROJECTNUMBER) = (
      SELECT DISTINCT COUNT(PROJECTNUMBER) FROM T2) 
     GROUP BY PMEMBER) 
+2

如果他想展示在所有项目上工作的成员?你确定?? – agim

+0

我只需要返回员工的姓名,这样我就不必使用JOIN子句,或者是正确的? – user3363032

+0

你是对的,我现在编辑... – kiks73

0
select t1.name 
from t1 
left join t2 on t1.initials = t2.pmember 
group by t1.name 
having sum(t2.projectnumber is null) = 0 
0

该查询应该给你的成员对所有项目的工作名称:

SELECT T1.NAME 
    FROM T1 
    JOIN T2 ON T1.INITIALS = T2.PMEMBER 
GROUP BY T1.NAME 
HAVING COUNT(T2.PROJECTNUMBER) = (SELECT COUNT(1) FROM T2 T2ALIAS) 
0

也许此查询可以帮助你:

SELECT T1.NAME 
FROM T1 
INNER JOIN T2 ON T1.INITIALS = T2.PMEMBER 
HAVING COUNT(T2.PROJECTNUMBER) > 1