新的Sql查询解决方案

时间:2010-01-24 10:04:41

标签: sql

person_id | manager_id | name |
          |            |      |
-------------------------------

我必须显示每个有经理姓名的人的姓名。

是完整的表格。多数民众赞成。

3 个答案:

答案 0 :(得分:5)

这个应该为所有拥有经理的员工提供employee_namemanager_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