person_id | manager_id | name |
| | |
-------------------------------
我必须显示每个人的姓名与经理姓名。新的SQL查询解决方案
是它的完整表格。这就是我的全部。
person_id | manager_id | name |
| | |
-------------------------------
我必须显示每个人的姓名与经理姓名。新的SQL查询解决方案
是它的完整表格。这就是我的全部。
这个应该给你所有有经理的员工,其中employee_name
和manager_name
。用您的表名替换your_table
。
如果你想让所有的人,也没有经理,取代JOIN
LEFT JOIN
。对于没有manager_id
的所有人员,这将返回NULL
作为manager_name
。
SELECT t1.name employee_name, t2.name manager_name
FROM [your_table] t1
JOIN [your_table] t2 ON (t1.manager_id = t2.person_id)
哪种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]
+1将'mgr'重命名为'raider',这是正确的答案! – Andomar 2010-01-24 10:29:39
不,它应该是'mrg'而不是'mgr',因为这是TQSL,而不是T-SQL。 ;) – 2010-01-24 13:01:53
@Mark - 每个人都是批评家! – 2010-01-24 19:44:11
SELECT person.name, manager.name
FROM table person, table manager
WHERE person.manager_id = manager.person_id
-1旧样式JOIN – gbn 2010-01-24 10:11:19
@gbn:它被称为*隐式连接符号*不是“旧样式连接”。禁止使用它吗?或者为什么它不好?尽管如此, – 2010-01-24 10:15:42
仍然有效! – 2010-01-24 10:19:06
这是完整的表?它是自引用吗? – 2010-01-24 10:07:42
+1,因为我很高兴在5分钟之内询问TWICE,在SOF – 2010-01-24 10:31:02
-1上看到这样一个很好,简短,清晰的问题:http://stackoverflow.com/questions/2126728/sql-query-for-this – 2010-01-24 11:03:22