2014-03-02 70 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