如何从两个不同的表中获取数据层次结构?

时间:2015-04-13 13:55:54

标签: sql-server database

我有两张表 TwitterStatus twitterstatusDetails

我分别以下列方式获得数据。

enter image description here

这里有twitterstatus表第4条记录,其中包含 ts_StatusID " 587573444633427968"是twitterstatus_Details表第3条记录的父级,其中td_inReplyTostatusID值为" 587573444633427968",对于下一条记录,最近子记录的td_StatusID是twitterstatus表的父级,在ts_InreplytoStatusID字段中具有该子ts_StatusID值,所以就像是层次结构,所以

如何根据子父关系从两个表中获取记录?

仍有任何疑虑,请在评论中提问。

谢谢。

1 个答案:

答案 0 :(得分:2)

我认为您正在寻找的是递归CTE以获得每个嵌套级别。 希望这能让你更接近你的目标。

--REPLACE @TwitterStatus and @twitterstatus_Details with your tablename.
;WITH CteTStatus
AS
(
    SELECT h.*, d.*, 0 as lvl
    FROM  @TwitterStatus AS h
    INNER JOIN @twitterstatus_Details AS d ON h.id_StatusID = d.td_InreplytoStatusID
    WHERE ts_StatusID = '587573444633427968'--WHERE CLAUSE TO GET ROOT PARENT
    UNION ALL -- UNION TO DIG INTO CHILD's
    SELECT h.*, d.*, lvl + 1 as lvl
    FROM  @TwitterStatus AS h
    INNER JOIN @twitterstatus_Details AS d ON h.id_StatusID = d.td_InreplytoStatusID
    INNER JOIN CteTStatus AS Parent ON h.ts_InreplytoStatusID = Parent.td_StatusID
)

SELECT *
FROM CteTStatus