2015-04-17 89 views
1

我想取消所有沒有項目的員工和沒有員工的項目。我不知道我在哪裏做錯了。MySQL:員工沒有項目和沒有員工的項目

表結構:

員工:EMPLOYEE_ID(PK),employee_name //所有員工

項目:project_code(PK),PROJECT_TITLE //所有項目

project_team:project_code(FK) employee_id(FK)//項目和員工的橋接表正在使用中。

這是我的查詢:

SELECT * 
FROM employee e 
    LEFT JOIN project_team pt USING (employee_id) WHERE pt.`project_code` IS NULL 
    INNER JOIN project p USING (project_code) WHERE (e.`employee_id` IS NULL) 
+0

這需要2個查詢。 –

+0

我想要做的1查詢@AbhikChakraborty –

+0

然後在這兩個查詢之間使用UNION ... – Marki555

回答

0

你可能想是這樣的:

SELECT employee_id AS id_or_code, employee_name AS name_or_title FROM employee e LEFT JOIN project_team pt ON e.employee_id = pt.employee_id WHERE pt.project_code is NULL 

UNION ALL 

SELECT project_code AS id_or_code, project_title AS name_or_title FROM project p LEFT JOIN project_team pt ON p.project_code = pt.project_code WHERE pt.employee_id is NULL; 

這種方式,你有兩列第一列是員工的id或查詢結果代碼或項目,第二列作爲員工的名稱或項目的標題。

+0

此查詢有錯誤... –

+0

對不起,誤解了要求,代碼現在是固定的。 – mfdev

0

您正試圖合併2個不同的選擇記錄到一個結果集,一個方法是使用UNION ALL,然後標記每個記錄類型的東西作爲

select 
e.employee_id as id , 
e.employee_name as name, 
'Employee' as type 
from employee e 
left join project_team pt on pt.employee_id = e.employee_id 
where pt.employee_id is null 
union all 
select 
p.project_code as id , 
p.project_title as name, 
'Project' as type 
from project p 
left join project_team pt on pt.project_code = p.project_code 
where pt.project_code is null ; 

下面是測試情況

mysql> select * from employee ; 
+-------------+---------------+ 
| employee_id | employee_name | 
+-------------+---------------+ 
|   1 | A    | 
|   2 | B    | 
|   3 | C    | 
|   4 | D    | 
|   5 | E    | 
+-------------+---------------+ 
5 rows in set (0.00 sec) 

mysql> select * from project ; 
+--------------+---------------+ 
| project_code | project_title | 
+--------------+---------------+ 
|   1 | P1   | 
|   2 | P2   | 
|   3 | P3   | 
|   4 | P4   | 
+--------------+---------------+ 
4 rows in set (0.00 sec) 

mysql> select * from project_team ; 
+--------------+--------------+ 
| project_code | employee_id | 
+--------------+--------------+ 
|   1 |   1 | 
|   1 |   2 | 
|   2 |   3 | 
|   2 |   4 | 
|   3 |   2 | 
|   3 |   1 | 
|   3 |   3 | 
+--------------+--------------+ 

運行上面的查詢將會給你

+------+------+----------+ 
| id | name | type  | 
+------+------+----------+ 
| 5 | E | Employee | 
| 4 | P4 | Project | 
+------+------+----------+