1
CREATE TABLE categories (
id integer serial primary key
parent_id integer
name text not null
ordering integer not null
);
我想選擇所有類別,但縮進子類別的名稱並將子類別放在其父類下。在同一級別,他們應該由ordering
訂購。
我目前有以下查詢,但返回的子類別的順序不正確。相反,他們相對於其兄弟姐妹絕對訂購而不是而不是。
WITH RECURSIVE recurse_categories(id, level, name, ordering) AS (
SELECT id, 0 AS level, name, ordering
FROM categories
WHERE parent_id IS NULL
UNION ALL
SELECT c.id, level + 1, c.name, c.ordering
FROM categories AS c
JOIN recurse_categories rc
ON rc.id = c.parent_id
)
SELECT id, repeat('→', level) || ' ' || name AS name
FROM recurse_categories
ORDER BY ordering
如何正確地進行排序?
我使用的是PostgreSQL 9.2.4。
我用'陣列[排序] AS ordering'和'rc.ordering ||代替c.ordering'。 – rightfold
是的,也可以這樣做,這只是解決方法,字符串可以在其他RDBMS中工作(如SQL Server,它沒有陣列) –