2017-05-16 4 views
2

私はemployeeテーブルとdepartmentテーブルを持っています。どのように私は以下の必要な結果を得るために結合を使用することができます。従業員表内のmanager_idは、従業員IDだけです。両方の内部結合と外部結合答えこの場合のMySQLでのjoinの使い方

Employee Table   

    id | name | manager_id | department_id    
    ----------------------------------------    
    1 | A | NULL  | 1       
    2 | B | 1   | 2       
    3 | C | NULL  | 3       
    4 | D | 3   | 2 

    Department Table 

    id | department_name 
    ------------------------- 
    1 | Admin 
    2 | HR 
    3 | Finance 


    Required OutPut 

    id | name | manager_name | department_name 
    ----------------------------------------------- 
    1 | A | NULL   | Admin     
    2 | B | A    | HR     
    3 | C | NULL   | Finance     
    4 | D | C    | HR 
+0

電子を選択し 'のような何かが。*、eと従業員からd.department_nameがe.department_id = d.id'にdと部門に参加するだけでなく' manager'テーブルに参加しましょう...かでマネージャーであります'従業員'テーブル? – chris85

+0

これは[link](https://www.w3schools.com/sql/sql_join.asp)から始めると良い記事です。 –

+0

はいmanager_idは社員IDと同じです。マネージャーテーブルはありません。返信ありがとうございます – PRM

答えて

2

使用を見つけるために私を助けてください

select E1.ID, E1.Name, E2.Name, D.department_name 
FROM Employee E1 
LEFT OUTER JOIN Employee E2 ON E2.ID = E1.manager_id 
INNER JOIN Department D ON D.id = E1.department_id 
+1

あなたが 'JOIN Employee E2'を意味する – Omn

+0

はい、私はそれを修正しました – asmgx

1
SELECT E1.id, E1.name, E2.name as manager_name, D1.department_name 
FROM Employee E1 
LEFT JOIN Employee E2 ON (E1.id = E2.manager_id) 
JOIN Department D2 ON (E1.department_id = D1.id) 

指定する必要があるの最初の自己マネージャ名を見つけるために、ジョインを行うと、その旧姓後に参加すること部門と適切な部署名を検索します。

+0

いくつかのマネージャーが存在しないので、左結合する必要があります。 – chris85

+0

ああ、ありがとう@ chris85 –

0

これが役に立ちます。

SELECT e.id as id, e.name as name e.manager_id as manager_id, 
d.department_name as department_name 
FROM Employee as e 
JOIN Department as d 
ON e.department_id = d.id 
関連する問題