2012-02-08 10 views
0

私は2つのテーブルを持っており、私は特定の選択をする必要があります。このSQL SELECTクエリをどのように構造化しますか?

最初の表は、第二のテーブルはcolums Departament IDを持ち、* Departament_Name *

マイSQLスクリプトが持っているDepartamentあるcolums 名前 * Departament_ID *と給与 を持ってEmployeです私departament、最大salay最低賃金の名を取得する Departament_IDは(注意:あなたがあなたの最初の記事で与えたように、すべてのスペルが正確にされている)、このような「30」

+3

あなたは何をしようとしたのですか?彼らは基本的なクエリです... –

答えて

0

何かがトリックを行う必要があります。

SELECT d.Department_Name AS name, 
      MAX(e.salary) AS max_salary, 
      MIN(e.salary) AS min_salary 
    FROM Department d 
LEFT JOIN Employe e ON d.Department_ID = e.Department_ID 
    WHERE d.Department_ID = 30 
0
SELECT d.department_name, 
     MIN(e.salary) AS 'Minimum Salary', 
     MAX(e.salary) AS 'Maximum Salary' 
FROM department d,employee e 
WHERE d.department_id=30 AND d.department_id=e.department_id 
GROUP BY d.department_name 
+2

メッシー参加:Pは、はるかに明白明示的に 'JOIN'は、あなたがそうやっているときではなく、:) – Joe

+0

確かに、しかし、左が参加WHERE'' 'FROM'でそれを隠し、しますここではやりすぎ;) – dgw

+0

笑、それはあなたがいない従業員と部署を処理する方法に依存し、あなたが 'JOIN'あなただけINNER''に 'LEFT'を変更していることを変更することができ、明示的に使用している場合、それはあなたのために行われています:) – Joe

0
SELECT max(sal) as MaximumSalary 
     ,min(sal) as MinimumSalary 
     ,department.Departament_Name 
     ,employee.Name 
FROM employee 
INNER JOIN department ON 
      employee.departmentid = department.department_id 
WHERE department.department_id = 31 
GROUP BY department.department_id 

最大と最小の機能はあなたの給与列の従業員表の最大値と最小値を与えます。これは、GROUP BYを使用する必要があります。なぜなら、彼らはデータ魔法使いのグループから最大値と最小値を計算する必要があるからです。それはテーブルのユニークなキーなので、部門IDでグループ化します。内部結合は、あなたが持っている2つのテーブルを結合するためのものです。我々は部署をクエリに入れたいので、内部結合です。

0
SELECT d.Department_Name AS name, 
     MAX(e.salary) AS max_salary, 
     MIN(e.salary) AS min_salary 
    FROM Department d 
    Inner JOIN Employee ON d.Department_ID = e.Department_ID 
    WHERE d.Department_ID = 30 
関連する問題