我有,我存儲有關章節的詳細信息的表格,我在指數下表以顯示數據排序數據
章
1.1章第1個
1.2章第2頁
第二章
2.1第二章第1頁
2.2第二章第2頁
第三章
標題1
標題2
標題三
3.1第三章Page 1
3.2第三章第2頁
3.3第三章第3頁
我們所用的排序或未排序的順序插入在數據庫中的數據。但數據應該以排序的順序顯示基於父頁和子頁的pageOrder
我已經設置了SQL小提琴,但由於某種原因,我無法保存SQL。下面你會發現小提琴環節和細節
CREATE TABLE [Book]
(
[id] int,
[Chapter] varchar(20),
[PageOrder] int,
[parentID] int
);
INSERT INTO [Book] ([id], [Chapter], [PageOrder], [parentID])
VALUES
('1', 'Chapter One', 1, 0),
('2', 'Chapter Two', 2, 0),
('3', 'Chapter Three', 3, 0),
('4', 'Chapter Four', 4, 0),
('5', 'Chapter Five', 5, 0),
('6', 'Chapter One Page 1', 1, 1),
('7', 'Chapter One Page 2', 2, 1),
('8', 'Chapter One Page 3', 3, 1),
('9', 'Chapter One Page 4', 4, 1),
('10', 'Chapter Two Page 1', 1, 2),
('11', 'Chapter Two Page 3', 3, 2),
('12', 'Chapter Two Page 2', 2, 2),
('13', 'Chapter Three Tite 1', 0, 3),
('14', 'Chapter Three Tite 2', 0, 3),
('15', 'Chapter Three Tite 3', 0, 3),
('16', 'Chapter Three Page 2', 2, 3),
('17', 'Chapter Three Page 3', 3, 3),
('18', 'Chapter Three Page 1', 1, 3);
WITH CTE(ID, parentID, Chapter, PageOrder, Depth, SortCol) AS
(
SELECT
ID, parentID, Chapter, PageOrder, 0,
CAST(ID AS varbinary(max))
FROM Book
WHERE parentID = 0
UNION ALL
SELECT
d.ID, d.parentID, d.Chapter, d.PageOrder, p.Depth + 1,
CAST(SortCol + CAST(d.ID AS binary(4)) AS varbinary(max))
FROM Book AS d
JOIN CTE AS p ON d.parentID = p.ID
)
SELECT
ID, parentID, Chapter, PageOrder, Depth,
REPLICATE('--', Depth) + Chapter as PageName
FROM CTE
ORDER BY SortCol
這CTE查詢排序數據,但子頁面沒有適當的排序子頁面在它們那裏保存在數據庫
SqlFiddle鏈接http://www.sqlfiddle.com/#!3/9770a/1排序順序顯示建立SortCol
對於( '12', '第二章第2',2,1)記錄的父ID爲2或1 u能確認?因爲你是第2章所以頁面順序是2。 – Buddi
是的你是正確的,事件改變拖2不會做任何改變的結果 – Learning