我希望在同一个查询中获得一位经理和一位为该经理工作的员工名单,如下:
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
这会有效,但效果不高。列出每个员工行的经理姓名。我希望它为null。我知道经理的名字,因为这是我要求的第一张唱片。
我出错的任何想法?
答案 0 :(得分:2)
为什么不
SELECT employees.id, employees.name, employees.title
WHERE employees.id = [manager ID]
OR employees.managerId = [manager ID]
这应该产生你所说的预期结果。
答案 1 :(得分:2)
使用联盟:
SELECT id, name, title FROM employees WHERE id = 1
UNION
SELECT id, name, title FROM employees WHERE managerId = 1
第一行是你的经理,其他人是他的雇员。