2017-08-15 78 views
0

我們正在與MLM項目合作。該項目的基本思路是一樣SQL Server內部加入到該查詢再次內部加入再次相同

  • A已經通過
  • 乙介紹已經被
  • Ç介紹已經被B
  • d推出已經用C
介紹

我的SQL Server表結構就像

user_details

https://i.stack.imgur.com/xcHGd.jpg

現在理論上

A's Team Members are => B , C , D 
    B's Team Members are => C , D 
    C's Team Member is => D 
    D's Team Member is => null (he doesn't have any team members yet) 

使用SQL查詢,我怎麼能找到 'A' 的團隊成員?

+1

我認爲你的問題會更好地收到,如果你張貼你已經嘗試過 - 感覺就像我們只是爲你做你的工作。 – Leonidas199x

+0

你好, 它絕對不是那樣的。我不希望你做我的工作。但從字面上看,我沒有從哪裏開始。 我知道內部連接可以使用。 我可以 SELECT * FROM 開始(從user_details選擇*內部聯接user_details上introduced_by_id = user_details.ID其中ID = 1)爲 內連接user_details上user_details.introduced_by_id = user_details.id 但是,這將幫助我找到A的團隊直到B,但我怎麼能找到C和D? 然後,我必須寫更多的2內連接.. 但真的說有25個成員,我找到了。 –

+1

從個人經驗來看,如果你已經表明你試圖解決這個問題,那麼人們更有可能提供幫助。用你迄今爲止試過的代碼和你遇到的問題更新你的問題。 – Leonidas199x

回答

0

如下您可以使用遞歸的SELECT語句: -

DECLARE @LeadName CHAR(1) = 'A'; 

WITH Team AS (
    SELECT ID, F_NAME, L_NAME, INTRODUCED_BY FROM mlm 
    WHERE F_NAME = @LeadName 
    UNION ALL 
    SELECT M.ID, M.F_NAME, M.L_NAME, M.INTRODUCED_BY FROM mlm M 
     JOIN Team T ON M.INTRODUCED_BY = T.ID 
) 
SELECT * FROM Team WHERE F_NAME <> @LeadName; 

這裏變量@LeadName是所需根(在你的案件 'A')的​​。