我有一个带ID和parentID的链接结构表。
$(findwstring a, angle b c)
到这个表我有一个structure_article关系表 在这个表中,我有链接和文章之间的关系。
struture_article
ID, Parent, name
1,1
2,1
3,2
4,3
5,3
该表中的每篇文章都有供应商。 现在我正在尝试创建一个创建树的递归函数 如果我选择一个特定的供应商,请点头。
文章表
structid, articleID
4,1000
4,1001
5,1002
如果我选择供应商1的文章,那么我希望该功能向我展示包含该供应商的文章的树结构。
我在DB中有20个供应商和300个链接,现在我只想显示我选择的供应商的文章。我不想要任何空洞的点头。
甚至可以在Sql Server 2008版本中使用递归函数创建吗?
我对这段代码感到害怕,问题是我只得到连接文章的点头
ArticleID, SUPPLIER ID
1000,1
1001,2
1002,2
答案 0 :(得分:0)
尝试使用左连接而不是内连接。
答案 1 :(得分:0)
我不确定是否了解您的需求,但如果您想要一个没有未链接到供应商的节点的新树表,则此查询可以正常工作。
WITH A AS
(
SELECT S.ID as ID, S.Parent as Parent, 1 as art_linked
FROM structure S
INNER JOIN dbo.structure_article SA
ON S.ID = SA.structid
INNER JOIN Article AR
ON AR.ArticleID = SA.ArticleID
WHERE AR.SupplierID = 1
UNION ALL
SELECT S.ID, S.Parent, 0
FROM structure S
INNER JOIN A
ON A.parent = S.ID
WHERE S.ID <> S.Parent
)
SELECT A.ID, A.Parent, MAX(A.art_linked)
FROM A
GROUP BY A.ID, A.Parent