2013-11-24 39 views
0
SELECT 
e.lname AS employee_name 
, s.lname AS supervisor_name 
, e.superssn AS supervisor_ssn 
FROM employee e INNER JOIN employee s 
WHERE e.superssn=s.ssn 

我其實有兩個問題。第一個是,上面的聲明工作得很好。但是現在,它會顯示一羣員工和他們的主管。組織不良。順便說一下,有三名主管。有什麼辦法可以讓我們說A和A,B和B,B和B?統計主管的員工人數

第二個問題是,我也嘗試只計算每個主管的員工數量,而不是用COUNT()顯示他們的名字,我嘗試了幾個不同的但不工作的員工。

+0

第一部分可以使用'ORDER BY s.lname,e.lname'或類似的方法解決。對於第二個查詢,您希望爲每位主管顯示1行,統計他們監督的員工人數? – OGHaza

+0

對於每一個都是不同的。一個是三個,一個是兩個。就這樣。 – Modaresi

回答

1

有幾件事情

1)這是很好的做法,讓您的加入謂詞您加入。所以改變:

FROM employee e INNER JOIN employee s WHERE e.superssn = s.ssn 

要:

FROM employee e INNER JOIN employee s ON e.superssn = s.ssn 

2)通過主管讓他們在一起,只需使用一個order by

SELECT 
    e.lname AS employee_name 
    , s.lname AS supervisor_name 
    , e.superssn AS supervisor_ssn 
FROM employee e INNER JOIN employee s ON e.superssn = s.ssn 
ORDER BY s.lname 

3)做員工的每一個的數主管使用group byCOUNT集合函數

SELECT 
    s.lname AS supervisor_name, 
    COUNT(*) AS employee_count 
FROM employee e INNER JOIN employee s ON e.superssn = s.ssn 
GROUP BY s.lname 
ORDER BY s.lname 
+0

非常感謝。對於COUNT的第二個問題,它出於某種原因給出語法錯誤。當我粘貼時,我糾正了lanme,但仍然是同樣的事情。 – Modaresi

+0

我在答案中忘記了逗號。這可能是 - 我現在只是改變它 –

+0

哦,是的,就是這樣。我很感激。 – Modaresi