从子内容中检索内容

时间:2010-02-19 11:34:21

标签: sql-server sql-server-2008

我正在使用SQL Server 2k8,并且有一个表需要能够提取动态内容。 所以,我想有两个列,就像父母和孩子一样。

ContentId - SubContentId - ContentInfo
100         100            data here
101         100            data here
102         100            data here
103         100            data here

因此,尽管ContentId正在递增,但SubContentId与Parent ContentId为100相关。因此,如果我选择ContentId 100,我也会检查SubContentId以获取此数字,以便拉回ContentId的所有详细信息这种方法是否合理?我的标志是什么?

2 个答案:

答案 0 :(得分:1)

创建,设置,测试:

CREATE TABLE #tmp (
    ContentID int, SubContentID int, ContentInfo varchar(255)
)

INSERT INTO #tmp VALUES (100, 100, 'info 1')
INSERT INTO #tmp VALUES (101, 100, 'info 2')
INSERT INTO #tmp VALUES (102, 100, 'info 3')
INSERT INTO #tmp VALUES (103, 100, 'info 4')
INSERT INTO #tmp VALUES (104, 100, 'info 5')

SELECT ContentInfo, 
          (SELECT ContentInfo + ',' as "data()"  
           FROM #tmp x 
           WHERE x.SubContentID = z.ContentID FOR XML PATH('')
          ) As [SubContent]  
FROM #tmp z
WHERE ContentID = 100

答案 1 :(得分:1)

您有一个自引用表。这并非全是坏事。您所要做的就是创建一个这样的查询。

SELECT * FROM content where subcontentID = contentID AND contentID = @contentID

结果将是具有指定contentID

的所有内容记录

如果您还需要查看所有数据,那么有序的结果集可能会很好。

SELECT * FROM content where subcontentID = contentID ORDER BY subcontentID,contentID

这将为您提供所有内容记录,将所有子内容记录按顺序保存在一起。

根据相同的架构创建重复的表格,这一点也不错。

相关问题