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