の階層がありArticle
、それぞれArticle
にプロパティがありますIsCommentable
。これは、true、false、または NULL の値を取ることができます。NULL の場合は、親に基づいて値を継承することを意味します。記事は再帰的に入れ子にすることができ、「深さ」に制限はありません。
ここで、データベースからコメント可能なすべての記事を取得するクエリを作成する必要があります。これらを SQL クエリ経由でロードできる方法はありますか?
SQL Server を使用していると仮定すると、再帰 CTEで実行できます。
WITH cte (id, iscommentable) AS (
SELECT id, iscommentable FROM Article WHERE iscommentable IS NOT NULL
UNION ALL
SELECT a1.id, a2.iscommentable FROM Article a1
INNER JOIN cte a2 ON a1.parent=a2.id
WHERE a1.iscommentable IS NULL
)
SELECT * FROM cte
SQL フィドルの例。