我有一个类别表和一个阶段表。每个类别都与一些阶段相关联,每个阶段可能有也可能没有子阶段。
这是 SQL 模式的样子:
CREATE TABLE Category
(
Id BIGINT,
Name VARCHAR(100),
Ordinal BIGINT
)
CREATE TABLE Stages
(
Id BIGINT,
Name VARCHAR(100),
CategoryId BIGINT,
ParentStage BIGINT,
Ordinal BIGINT
)
我正在尝试编写查询,以便以正确的顺序获取类别、阶段和 ChildStages。
这就是我想要得到的:
Category Stage
-----------------------------
Cat1 Cat1Stage1
Cat1 Cat1Stage2
Cat1 Cat1Stage3
Cat1 Cat1Stage3ChildStage1
Cat1 Cat1Stage3ChildStage2
Cat1 Cat1Stage3ChildStage3
Cat1 Cat1Stage4
Cat1 Cat1Stage5
Cat2 Cat2Stage1
Cat2 Cat2Stage2
Cat2 Cat2Stage3
Cat2 Cat2Stage3ChildStage1
Cat2 Cat2Stage3ChildStage2
Cat2 Cat2Stage3ChildStage3
Cat2 Cat2Stage4
Cat2 Cat2Stage5
这是我写的查询,它没有按该顺序给我结果:
SELECT Category.Name 'Category Name',
Stages.Name 'Stage Name'
FROM Category
LEFT JOIN Stages
ON Category.Id = Stages.CategoryId
ORDER BY Category.Ordinal,
CASE WHEN ParentStage IS NULL THEN Stages.Ordinal ELSE ParentStage END
http://sqlfiddle.com/#!3/d8c2d
我错过了什么 join order by 子句?