2010-11-19 29 views
0

加入我希望得到一個經理,對於在同一查詢該經理工作的員工的名單,因爲這樣的:語法錯誤在MySQL

record 1: manager.name, manager.title 
record 2: employee.name, employee.title 
record 3: employee.name, employee.title 
record 4: employee.name, employee.title 

的信息都存儲在同一張桌子。我想下面的查詢,但它給了我一個語法錯誤「1064」:

SELECT employees.id, employees.name, employees.title, employees.managerId, managers.id, managers.title, managers.name 
FROM employees 
FULL OUTER JOIN employees AS managers ON employees.id = managers.managerId 
WHERE employees.id = '1' 

現在我知道,如果我用left join這會工作,但似乎並不高效。經理的名字被列入每一個員工行列。我希望它是空的。我知道經理的名字已經是我要求的第一張唱片了。

任何想法我錯了嗎?

回答

2

使用工會:

SELECT id, name, title FROM employees WHERE id = 1 
UNION 
SELECT id, name, title FROM employees WHERE managerId = 1 

第一行是你的經理,其他都是他的員工。

2

爲什麼不

SELECT employees.id, employees.name, employees.title 
WHERE employees.id = [manager ID] 
OR employees.managerId = [manager ID] 

這應該會產生您所述的預期結果。

+0

儘管如此,這並不一定會讓經理人排第一。如果經理ID爲經理的零或NULL,則追加ORDER BY managerId ASC可能會起作用。 – Thilo 2010-11-19 17:00:46