person_id | manager_id | name |
| | |
-------------------------------
我必须显示每个有经理姓名的人的姓名。
是完整的表格。多数民众赞成。
答案 0 :(得分:5)
这个应该为所有拥有经理的员工提供employee_name
和manager_name
。将your_table
替换为您的表名。
如果您想让所有人(也包括没有经理)将JOIN
替换为LEFT JOIN
。对于没有NULL
的所有人,这会将manager_name
作为manager_id
返回。
SELECT t1.name employee_name, t2.name manager_name
FROM [your_table] t1
JOIN [your_table] t2 ON ( t1.manager_id = t2.person_id )
答案 1 :(得分:4)
哪种SQL方言?这是一些TSQL,但我对实际问题(“每个有经理名字的人”)都很模糊;如果您的意思是“给出经理姓名,列出人员(报告)”,那么:
SELECT peon.[person_id], peon.[name]
FROM [thetable] mgr
INNER JOIN [thetable] peon
ON peon.manager_id = mgr.[person_id]
WHERE mgr.[name] = @name
ORDER BY peon.[name]
如果您的意思是“列出人员及其经理的姓名”,那么:
SELECT peon.[person_id], peon.[name], mgr.[name] AS [manager]
FROM [thetable] peon
LEFT OUTER JOIN [thetable] mgr
ON mgr.[person_id] = peon.manager_id
ORDER BY peon.[name]
答案 2 :(得分:0)
SELECT person.name, manager.name
FROM table person, table manager
WHERE person.manager_id = manager.person_id