2012-01-28 21 views
0

我有一個表員工和一個表部門。每個員工都鏈接到一個部門ID。僱員表中的字段如何檢查計數並根據該查詢

EMPLOYEE 
    ssn, fname, lname, dept_id 


    DEPARTMENT 
    dept_id, dept_name 

所以我的問題是,我需要選擇僱員的名字和姓氏如果在一個特定的部門超過300名員工。我不確定最好的方法來做到這一點。任何幫助都感激不盡。

回答

1

的主要問題是MySQL的好惡查詢與訪問相同的表子查詢。

SELECT d.dept_name, GROUP_CONCAT(CONCAT(E.FNAME,' ',E.LNAME) ORDER BY E.LNAME 
SEPARATOR ','), 
FROM DEPARTMENT D JOIN EMPLOYEE E USING(dept_id) 
GROUP BY dept_id 
HAVING COUNT(*) > 3; 

此解決方案將爲每個部門的每行提供employess列表。 例如:

「IT」,「米老鼠,湯姆·瓊斯」 「HR」,「艾米莉·勃朗特」

如果你願意,你可以改變用隔膜員工列表中使用的分隔符。

+0

+1,可以通過使用CONCAT_WS('',E.fname,E.lname)進行優化' – diEcho 2012-01-29 09:54:50

0

嘗試

SELECT lname, fname 
FROM Employee 
WHERE dept_id 
IN (

SELECT dept_id 
FROM Employee 
GROUP BY dept_id 
HAVING COUNT(*) > 3) 
+0

糟糕,查詢的第一個版本在內部查詢中有錯誤。現在修復它。 – ose 2012-01-28 10:35:37

相關問題