2012-02-11 5 views
-2

可能な重複作業をされていません:以下の表を考えてみ
Is there a way to make this SQL more efficient?私のSQLクエリは

を:

  • department

    deptid (type: INT) 
    deptname (type: TEXT) 
    hours (type: INT) 
    active (type: BIT) 
    
  • employee

    empid (type: INT) 
    empname (type: TEXT) 
    deptid (type: INT) 
    designation (type: TEXT) 
    salary (type: INT) 
    

は、列empnameと4以上のヘッド数を持っているそれらの部門に所属する従業員のdeptnameを返すようにクエリを記述します。レコードは、アルファベット順にempnameの順に返されます。

私の解決策は次のとおりです。

SELECT e.empname,d.deptname 
FROM employee e,department d 
WHERE e.deptid=d.deptid 
     AND d.deptid 
     IN 
(
SELECT deptid 
FROM employee 
GROUP BY deptid 
HAVING COUNT(*)>=4 
) 
ORDER BY e.empname; 
+0

あなたの質問が正しいようです。 – danihp

+0

宿題のような音: –

+1

これはおそらく宿題です。私は[このリンク](http://www.sqlservercentral.com/Forums/Topic1127784-391-1.aspx)とまったく同じ質問を見つけました。 – Rob

答えて

0

this linkでご回答いただけます。

SELECT employee.empname, department.deptname 
FROM employee 
INNER JOIN department ON employee.deptid = department.deptid 
WHERE employee.deptid IN 
(
    SELECT employee.deptid 
    FROM employee 
    GROUP BY employee.deptid 
    HAVING COUNT(employee.deptid) >= 4 
) 
ORDER BY employee.empname ASC; 

編集:あなたは私をこの溶液中で何かを説明したい場合は、お気軽にお問い合わせください。 :)

+0

@Venkちょうどフォローアップの質問;これはあなたを助けましたか、これはあなたが探していた答えではありませんか? – Rob

関連する問題