2013-10-23 39 views
1

我是很新的SQL,我需要你的幫助,這種情況下,這可能是基本的東西,對於大多數的你:遞歸SQL查詢返回特定的頂級老闆

我有一臺「僱員」其中包括屬性ID和BOSS_ID。 頂級BOSS的BOSS_ID爲NULL。

現在我想要一張表,其中列出了員工ID以及特定頂級老闆的ID。

我已經做了這是遞歸查詢,這與上級老闆的ID返回所有僱員:

WITH TopBosses(ID,NAME, BOSS_ID) 
AS 
(
    SELECT ID,NAME, BOSS_ID 
    FROM EMPLOYEE 
    WHERE BOSS_ID IS NULL 
    UNION ALL 

    SELECT EMPLOYEE.ID,EMPLOYEE.NAME, EMPLOYEE.BOSS_ID 
    FROM EMPLOYEE 
    INNER JOIN TopBosses 
     ON EMPLOYEE.BOSS_ID = TopBosses.ID 
) 
SELECT ID,NAME, BOSS_ID 
FROM TopBosses 

但作爲一個新的水平老闆ID已經是表的一部分「員工」,這對我來說毫無用處:)我只是沒有得到最後一步,我總能得到特定的頂級老闆。

謝謝你的回覆!

+0

您使用的數據庫是? –

+0

這是一個MySQL數據庫 – user2910467

回答

0

您可以在每一行中包含頂級老闆ID

例如,

WITH TopBosses(ID,NAME,BOSS_ID,TOP_ID) 
AS 
(
    SELECT ID,NAME,NULL AS BOSS_ID,ID AS TOP_ID 
    FROM EMPLOYEE 
    WHERE BOSS_ID IS NULL 
    UNION ALL 

    SELECT EMPLOYEE.ID,EMPLOYEE.NAME,EMPLOYEE.BOSS_ID,TopBosses.TOP_ID 
    FROM EMPLOYEE 
    INNER JOIN TopBosses 
     ON EMPLOYEE.BOSS_ID = TopBosses.ID 
) 
SELECT ID,NAME,BOSS_ID,TOP_ID 
FROM TopBosses 
+0

因此,在您的解決方案中,BOSS_ID是下一個級別的老闆,TOP_ID是頂級老闆......很棒:) thx很多! – user2910467