2012-01-28 4 views
0

私はテーブルの従業員とテーブル部門を持っています。各従業員は部門IDにリンクされています。 employeeテーブルのフィールドは、だから私の問題は、私は特定の部門で3つ以上の従業員がある場合は、従業員の名前と姓を選択する必要があるということですカウントを確認する方法とそのクエリに基づいて

EMPLOYEE 
    ssn, fname, lname, dept_id 


    DEPARTMENT 
    dept_id, dept_name 

です。私はこれを行うための最善の方法はわかりません。どんな助けでも大歓迎です。

答えて

1

を試してみてください。

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; 

この解決方法は、部門ごとの行ごとの雇用率のリストを提供します。例えば :

「IT」、「ミッキーマウス、トム・ジョーンズの 「HR」、「エミリー・ブロンテ」

ご希望の場合は、セパレータを従業員リストで使用される区切り文字を変更することができます。

+0

+1は、 'CONCAT_WS( ''、E.fname、E.lname)'を使って最適化することができます。 – diEcho

0

は、主な問題は、MySQLが同じテーブルにアクセスするサブクエリを持つクエリを嫌いです

SELECT lname, fname 
FROM Employee 
WHERE dept_id 
IN (

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

クエリの最初のバージョンでは、内側のクエリで間違いがありました。今すぐ修正しました。 – ose

関連する問題