嗨,大家好,我有這個給定的表..在這個表中,我想要一個select查詢來替換managerid和它所關聯的員工的名字。在同一個表內選擇外鍵的命令
例如:我想輸出爲
1 | andy | sw | andy
2 | brij | sw | andy
3 | toby | SW | BRIJ
是否有可能同一個表內做到這一點。
嗨,大家好,我有這個給定的表..在這個表中,我想要一個select查詢來替換managerid和它所關聯的員工的名字。在同一個表內選擇外鍵的命令
例如:我想輸出爲
1 | andy | sw | andy
2 | brij | sw | andy
3 | toby | SW | BRIJ
是否有可能同一個表內做到這一點。
除了@ Shakeer的答案,我發現一個更alternative.This一個是不留join..but自連接。
SELECT e.empid, e.empname, m.empname "Manager" FROM test_Emp e, test_Emp m WHERE e.managerid=m.empid;
只要自己加入即可知道經理姓名。
SELECT E1.EMPNAME, E1.DESIGNATION, E2.EMPNAME AS MANAGER_NME
FROM EMPLOYEE E1
LEFT JOIN EMPLOYEE E2 ON E1.MANAGER_ID = E2.EMPID
只是一點修正,用E2取代EMPID。 EMPID在最後...然後它運行完美 –
是..對不起,錯字錯誤@BhawnaJain –
很好..從我身上得到:) –
當您想要從同一張表中讀取記錄時,可以使用SELF_JOIN。
例如:
表名稱:員工
領域:EMPID,EMPNAME,經理ID
現在,如果你想要得到誰是經理的位置爲Empolyees的細節,我們需要寫這樣的查詢:
select e2.EMPID,e2.EMPNAME, COALESCE(e1.EMPNAME,e2.EMPNAME,e1.EMPNAME) as Mannager
from `employee` e1 right join `employee` e2
on e1.empid=e2.managerid
沒有Shoukat ...請先閱讀問題..查詢等值'選擇empid ,僱員的empname .. –
對不起......嘗試這一項「從employee' e1中選擇e2.EMPID,e2.EMPNAME,COALESCE(e1.EMPNAME,e2.EMPNAME,e1.EMPNAME)作爲Mannager 在e1.empid = e2.managerid「 –
也可以嘗試這種方式:
SELECT EMPID,EMPNAME,DESIGNATION, case when 'MANAGERID' <> EMPNAME then EMPNAME else null end as MANAGERID FROM YOURTABLE
上右鍵加入'employee' e2 得到以下錯誤:1。關鍵字'IF'2附近的語法不正確。','附近語法不正確。 –
我的錯誤,我猜你正在使用MYSQL。更新了SQL的答案。 –
現在它完美的工作... upvotting你的答案:) –
您的查詢應該是
SELECT
a.EMPID,
a.EMPNAME,
a.DESIGNATION,
(Select b.EMPNAME from Employee as b where a.MANAGERID = b.EMPID) as
MANAGER
FROM
Employee as a
多一種方法來解決這個問題..upvotted你回答:) –
很高興它幫助...乾杯! – Mahesh
DECLARE @Emp table (EmpID INT,EmpName varchar(100),Designation varchar(10),MgrID INT)
INSERT INTO @Emp(EmpID,EMpName,Designation,MgrID)
SELECT *
FROM (VALUES(1,'andy','sw',NULL),
(2,'brij','sw',1),
(3,'toby','sw',2)
)v (EmpID,EMpName,Designation,MgrID)
SELECt e.EmpID,e.EMpName,e.Designation,ISNULL(e1.EmpName,e.EmpName) AS Mgr
FROM @Emp e
LEFT JOIN @Emp e1 ON e.MgrID = e1.EmpID
請格式化並解釋你的回答 – Mazz
我想第三個是編輯..但是這個doent產生了期望的結果......它最後顯示了額外的兩個colums ...... andy列缺失......因此, –
是有可能,你可以嘗試在同一臺 – Miller
別名加入試試這個
'從tblEmployee選擇e.empid,e.empname,e.designation,m.manager爲e JOIN tblManager爲m E上.ManagerID = m.ManagerID GROUP BY e.empid,e.empname,e.designation,m.manager' –
試過這個..沒有得到輸出 –