我有一個表員工和一個表部門。每個員工都鏈接到一個部門ID。僱員表中的字段如何檢查計數並根據該查詢
EMPLOYEE
ssn, fname, lname, dept_id
DEPARTMENT
dept_id, dept_name
所以我的問題是,我需要選擇僱員的名字和姓氏如果在一個特定的部門超過300名員工。我不確定最好的方法來做到這一點。任何幫助都感激不盡。
我有一個表員工和一個表部門。每個員工都鏈接到一個部門ID。僱員表中的字段如何檢查計數並根據該查詢
EMPLOYEE
ssn, fname, lname, dept_id
DEPARTMENT
dept_id, dept_name
所以我的問題是,我需要選擇僱員的名字和姓氏如果在一個特定的部門超過300名員工。我不確定最好的方法來做到這一點。任何幫助都感激不盡。
的主要問題是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」,「艾米莉·勃朗特」
如果你願意,你可以改變用隔膜員工列表中使用的分隔符。
嘗試
SELECT lname, fname
FROM Employee
WHERE dept_id
IN (
SELECT dept_id
FROM Employee
GROUP BY dept_id
HAVING COUNT(*) > 3)
糟糕,查詢的第一個版本在內部查詢中有錯誤。現在修復它。 – ose 2012-01-28 10:35:37
+1,可以通過使用CONCAT_WS('',E.fname,E.lname)進行優化' – diEcho 2012-01-29 09:54:50