获取特定用户的记录树列表
Get tree list of records for a specific user
我有这两个 table:
Table1(消息)
消息ID |用户名 |主题 |文本M |父亲留言 | ....
表 2 (Tb_Registration)
用户ID |用户名 | ....
在 TreeList 中使用以下查询,我在其中设置了 DataKeyNames=MessageID 和 ParentDataKeyNames=FatherMessage,我得到了所有用户的消息树和对它们的相关答案。 :
SELECT Messages.Subject,
Messages.FatherMessage,
Messages.TextM,
Messages.MessageID,
Tb_Registration.Username
FROM Messages
INNER JOIN Tb_Registration
ON Messages.UserID = Tb_Registration.UserID
ORDER BY Messages.MessageID ASC
我现在的挑战是获得完全相同但针对特定用户的结果,我不知道如何进行此类查询。我的意思是,来自特定用户的 FatherMessage 以及与其关联的所有子消息。级别 0 上的所有消息(新消息)在 table 中都有 FatherMessage=null 字段。所有其他消息(答案)都具有父消息的 MessageID 作为 FatherMessage。
这是一些示例数据:
MessageID | UserID | Subject | TextM | FatherMessage |
1 user1 X some null
2 user2 null text 1
3 user3 null text 1
4 user4 null text 2
5 user4 y text null
以上(其中用户名 = user1)的预期输出是:
MessageID | UserID | Subject | TextM | FatherMessage |
1 user1 X some null
2 user2 null text 1
4 user4 null text 2
3 user3 null text 1
我们将不胜感激。
试试这个..
DECLARE @Messages TABLE(MessageID int,
UserID VARCHAR(100),
Subject varchar(150),
TextM varchar(250),
FatherMessage int)
INSERt INtO @Messages
(MessageID ,UserID , Subject , TextM , FatherMessage )
VALUES
(1,'user1','X ','some ',null),
(2,'user2','null','text',1),
(3,'user3','null','text',1),
(4,'user4','null ','text ',2),
(5,'user4',' y ',' text',null)
;with cte(MessageID , UserID , Subject , TextM , FatherMessage) AS (
select * from @Messages where UserID='user1'
UNION all
SELECT m.* FROM @Messages m INNEr JOIN cte ON m.FatherMessage=cte.MessageID
)
SELECT * FROM cte
输出
MessageID UserID Subject TextM FatherMessage
--------------------------------------------------------
1 user1 X some NULL
2 user2 null text 1
3 user3 null text 1
4 user4 null text 2
我有这两个 table:
Table1(消息)
消息ID |用户名 |主题 |文本M |父亲留言 | ....
表 2 (Tb_Registration)
用户ID |用户名 | ....
在 TreeList 中使用以下查询,我在其中设置了 DataKeyNames=MessageID 和 ParentDataKeyNames=FatherMessage,我得到了所有用户的消息树和对它们的相关答案。
SELECT Messages.Subject,
Messages.FatherMessage,
Messages.TextM,
Messages.MessageID,
Tb_Registration.Username
FROM Messages
INNER JOIN Tb_Registration
ON Messages.UserID = Tb_Registration.UserID
ORDER BY Messages.MessageID ASC
我现在的挑战是获得完全相同但针对特定用户的结果,我不知道如何进行此类查询。我的意思是,来自特定用户的 FatherMessage 以及与其关联的所有子消息。级别 0 上的所有消息(新消息)在 table 中都有 FatherMessage=null 字段。所有其他消息(答案)都具有父消息的 MessageID 作为 FatherMessage。
这是一些示例数据:
MessageID | UserID | Subject | TextM | FatherMessage |
1 user1 X some null
2 user2 null text 1
3 user3 null text 1
4 user4 null text 2
5 user4 y text null
以上(其中用户名 = user1)的预期输出是:
MessageID | UserID | Subject | TextM | FatherMessage |
1 user1 X some null
2 user2 null text 1
4 user4 null text 2
3 user3 null text 1
我们将不胜感激。
试试这个..
DECLARE @Messages TABLE(MessageID int,
UserID VARCHAR(100),
Subject varchar(150),
TextM varchar(250),
FatherMessage int)
INSERt INtO @Messages
(MessageID ,UserID , Subject , TextM , FatherMessage )
VALUES
(1,'user1','X ','some ',null),
(2,'user2','null','text',1),
(3,'user3','null','text',1),
(4,'user4','null ','text ',2),
(5,'user4',' y ',' text',null)
;with cte(MessageID , UserID , Subject , TextM , FatherMessage) AS (
select * from @Messages where UserID='user1'
UNION all
SELECT m.* FROM @Messages m INNEr JOIN cte ON m.FatherMessage=cte.MessageID
)
SELECT * FROM cte
输出
MessageID UserID Subject TextM FatherMessage
--------------------------------------------------------
1 user1 X some NULL
2 user2 null text 1
3 user3 null text 1
4 user4 null text 2