正式库NET表里递归查某一个网络.sql 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. SELECT
  2. G.会员编号,
  3. G.会员姓名,
  4. G.推荐编号,
  5. G.推荐姓名,
  6. V.会员荣衔,
  7. V.SORT
  8. FROM
  9. (SELECT
  10. P.USER_NAME AS 会员编号,
  11. I.REAL_NAME AS 会员姓名,
  12. O.REAL_NAME AS 推荐姓名,
  13. P.PARENT_NAME AS 推荐编号
  14. FROM
  15. (WITH RECURSIVE T_REC AS -- RECURSIVE为关键字,可以不列出字段列表
  16. (
  17. SELECT
  18. M.USER_ID,
  19. U.USER_NAME,
  20. M.INTRODUCER_ID,
  21. U2.USER_NAME AS PARENT_NAME,
  22. 1 AS NODE_LEVEL
  23. FROM
  24. AR_BS_BONUS_103_CALC_NET M
  25. LEFT JOIN AR_USER U ON U.ID = M.USER_ID
  26. LEFT JOIN AR_USER U2 ON U2.ID = M.INTRODUCER_ID
  27. WHERE
  28. U.USER_NAME = 'E41796338' UNION ALL
  29. SELECT
  30. T1.USER_ID,
  31. U.USER_NAME,
  32. T1.INTRODUCER_ID,
  33. U2.USER_NAME AS PARENT_NAME,
  34. T2.NODE_LEVEL + 1 -- 结点层级
  35. FROM
  36. AR_BS_BONUS_103_CALC_NET T1
  37. JOIN T_REC T2 ON T1.INTRODUCER_ID = T2.USER_ID -- 递归生成的结果集T2的PARENT_ID与之前的源表ID关联
  38. LEFT JOIN AR_USER U ON U.ID = T1.USER_ID
  39. LEFT JOIN AR_USER U2 ON U2.ID = T1.INTRODUCER_ID
  40. ) SELECT
  41. *
  42. FROM
  43. T_REC) P
  44. LEFT JOIN AR_USER I ON I.USER_NAME = P.USER_NAME
  45. LEFT JOIN AR_USER O ON O.USER_NAME = P.PARENT_NAME
  46. LEFT JOIN AR_BS_BONUS_103_CALC_NET E ON E.USER_ID = P.USER_ID) G
  47. LEFT JOIN
  48. (SELECT
  49. U.USER_NAME AS 会员编号,
  50. U.REAL_NAME AS 会员姓名,
  51. L2.LEVEL_NAME AS 会员荣衔,
  52. L2.SORT
  53. FROM
  54. AR_CALC_BONUS_BS A
  55. LEFT JOIN AR_EMPLOY_LEVEL L2 ON A.LEVEL_ID = L2.ID
  56. LEFT JOIN AR_USER U ON U.ID = A.USER_ID
  57. WHERE A.PERIOD_NUM = 159 AND A.ORI_BONUS > 0 AND L2.LEVEL_NAME != '无聘级')V ON V.`会员编号` = G.会员编号