我需要在SQL中实现以下分类:
......这意味着2 x M:N关系。下表可以存储组树:
TEST_TABLE
test_id(pk),test_name
GROUP_TABLE
group_id(pk),group_name
TEST_IN_GROUP_TABLE
test_id(fk),group_id(fk)
GROUP_RELATIONS_TABLE
parent_group_id(fk),child_group_id(fk)
可是:
答案 0 :(得分:1)
使用公用表表达式首先构建所搜索组的group_id,然后使用该单个组列表,通过TEST_IN_GROUP_TABLE连接到测试表以进行所有测试。
;with cte as (
select group_id
from GROUP_TABLE
where group_id = 1
union all
select child_group_id
from GROUP_RELATIONS_TABLE
inner join cte on cte.group_id = GROUP_RELATIONS_TABLE.parent_group_id
)
select t.*
from cte
inner join TEST_IN_GROUP_TABLE tg on tg.group_id = cte.group_id
inner join TEST_TABLE t on t.test_id = tg.test_id