Problemer med CTE, UNION ALL og ORDER BY
Hej eksperter, jeg er i gang med at lave en CTE - den driller mig desværre rimelig meget, da jeg har fundet ud af at man ikke kan sortere på den anden SELECT i en UNION ALL, og det har jeg ret meget brug for.Min menustruktur kan se cirka sådan her ud:
- Hovedside 1 (1)
- Underside 1 (1)
- Underside 2 (2)
- Underside 3 (3)
- Underunderside 1 (1)
- Underunderside 2 (2)
Hovedside 2 (2)
- Underside 1 (1)
- Underside 2 (2)
- Underside 3 (3)
Det er sorteringstallet der står i parentes, og den skal sortere som overstående, men det vil den ikke rigtig.
Lige i øjeblikket ser min SQL sådan her ud:
BEGIN
-- Loop menuitems
WITH temp_entries (page_id, parent_id, pagename, deactive, hidden, startpage, page_order, page_level) AS
(
SELECT TOP 100 s.id AS page_id, s.parent_id, s.pagename, s.is_deactive, s.is_hidden, s.is_startpage, s.page_order, 1 AS page_level
FROM cms_menuitems s
WHERE
s.parent_id = 0
AND
s.language_id = @language_id
ORDER BY s.page_order
UNION ALL
SELECT s.id AS page_id, s.parent_id, s.pagename, s.is_deactive, s.is_hidden, s.is_startpage, s.page_order, t.page_level+1
FROM cms_menuitems s, temp_entries t
WHERE
s.language_id = @language_id
AND
s.parent_id = t.page_id
)
-- Print menuitems
SELECT page_id, parent_id, pagename, deactive, hidden, startpage, page_order, page_level FROM temp_entries ORDER BY page_order
END