SQLITE 中的两个递归选择联合
TWO RECURSIVE SELECTS UNION IN SQLITE
我想问一下,如何将这两个递归SELECT 联合到一个结果集中。谢谢回答
WITH sub_tree (Item_id,Item_name,Item_fyz,Item_fyz_hodnotaID)
AS
(Select A.id,A.name,A.fyz1_x_id,A.fyz_hodnota_id
from fyz_hodnota AS A
where A.id = 29
UNION ALL
SELECT BF.id, BF.name,BF.fyz1_x_id, BF.fyz_hodnota_id
from fyz_hodnota AS BF
inner join sub_tree st on st.Item_id = BF.fyz_hodnota_id)
SELECT DISTINCT * from sub_tree
WITH sub_tree (Item_id,Item_name,Item_fyz,Item_fyz_hodnotaID)
AS
(Select A.id,A.name,A.fyz1_x_id,A.fyz_hodnota_id
from fyz_hodnota AS A
where A.id=27
UNION ALL
SELECT BF.id, BF.name,BF.fyz1_x_id, BF.fyz_hodnota_id
from fyz_hodnota BF
inner join sub_tree st on st.Item_fyz_hodnotaID = BF.id)
SELECT * from sub_tree
在同一 WITH
子句下声明 2 个 CTE 并应用 UNION
:
WITH
sub_tree1(Item_id,Item_name,Item_fyz,Item_fyz_hodnotaID) AS (
Select A.id,A.name,A.fyz1_x_id,A.fyz_hodnota_id
from fyz_hodnota AS A where A.id = 29
UNION ALL
SELECT BF.id, BF.name,BF.fyz1_x_id, BF.fyz_hodnota_id
from fyz_hodnota AS BF inner join sub_tree1 st
on st.Item_id = BF.fyz_hodnota_id
),
sub_tree2(Item_id,Item_name,Item_fyz,Item_fyz_hodnotaID) AS (
Select A.id,A.name,A.fyz1_x_id,A.fyz_hodnota_id
from fyz_hodnota AS A
where A.id=27
UNION ALL
SELECT BF.id, BF.name,BF.fyz1_x_id, BF.fyz_hodnota_id
from fyz_hodnota BF inner join sub_tree2 st
on st.Item_fyz_hodnotaID = BF.id
)
SELECT DISTINCT * from sub_tree1
UNION ALL
SELECT * from sub_tree2
我想问一下,如何将这两个递归SELECT 联合到一个结果集中。谢谢回答
WITH sub_tree (Item_id,Item_name,Item_fyz,Item_fyz_hodnotaID)
AS
(Select A.id,A.name,A.fyz1_x_id,A.fyz_hodnota_id
from fyz_hodnota AS A
where A.id = 29
UNION ALL
SELECT BF.id, BF.name,BF.fyz1_x_id, BF.fyz_hodnota_id
from fyz_hodnota AS BF
inner join sub_tree st on st.Item_id = BF.fyz_hodnota_id)
SELECT DISTINCT * from sub_tree
WITH sub_tree (Item_id,Item_name,Item_fyz,Item_fyz_hodnotaID)
AS
(Select A.id,A.name,A.fyz1_x_id,A.fyz_hodnota_id
from fyz_hodnota AS A
where A.id=27
UNION ALL
SELECT BF.id, BF.name,BF.fyz1_x_id, BF.fyz_hodnota_id
from fyz_hodnota BF
inner join sub_tree st on st.Item_fyz_hodnotaID = BF.id)
SELECT * from sub_tree
在同一 WITH
子句下声明 2 个 CTE 并应用 UNION
:
WITH
sub_tree1(Item_id,Item_name,Item_fyz,Item_fyz_hodnotaID) AS (
Select A.id,A.name,A.fyz1_x_id,A.fyz_hodnota_id
from fyz_hodnota AS A where A.id = 29
UNION ALL
SELECT BF.id, BF.name,BF.fyz1_x_id, BF.fyz_hodnota_id
from fyz_hodnota AS BF inner join sub_tree1 st
on st.Item_id = BF.fyz_hodnota_id
),
sub_tree2(Item_id,Item_name,Item_fyz,Item_fyz_hodnotaID) AS (
Select A.id,A.name,A.fyz1_x_id,A.fyz_hodnota_id
from fyz_hodnota AS A
where A.id=27
UNION ALL
SELECT BF.id, BF.name,BF.fyz1_x_id, BF.fyz_hodnota_id
from fyz_hodnota BF inner join sub_tree2 st
on st.Item_fyz_hodnotaID = BF.id
)
SELECT DISTINCT * from sub_tree1
UNION ALL
SELECT * from sub_tree2