[英]How to format results in Postgres?
我需要顯示位於虛擬學習環境 (VLE) 中的課程內容的位置 - 基本上它是一個由 Postgres 數據庫支持的教學和學習網站。
我創建了以下返回原始數據的查詢。 下面是一個示例
WITH RECURSIVE folders AS(
SELECT ccs.pk1, ccs.parent_pk1, ccs.position, ccs.folder_ind, ccs.title
FROM course_contents ccs
INNER JOIN course_main cm ON cm.pk1 = ccs.crsmain_pk1
WHERE cm.course_id = '<COURSE ID>'
and ccs.pk1 = '<INDEX>' -- primary key
UNION ALL
SELECT cc.pk1, cc.parent_pk1, cc.position, cc.folder_ind, cc.title
FROM course_contents cc
JOIN folders ON folders.pk1 = cc.parent_pk1
)
SELECT f.*
FROM folders f
樣本數據
PK1 | PARENT_PK1 | 位置 | 文件夾 | 標題 |
---|---|---|---|---|
11497702 | 無效的 | 0 | 是 | 評估 |
11497708 | 11497702 | 0 | N | 使用評估工具 |
11497709 | 11497702 | 1 | N | 過去的試卷 |
11497710 | 11497702 | 2 | N | 使用評估工具 |
11497711 | 11497702 | 3 | N | 過去的試卷 |
我想像下表一樣顯示它。 需要注意的是,有多個級別 - 文件夾中的文件,文件夾中的文件夾等。
小路 |
---|
評估 - 使用評估工具 |
評估 - 過去的考試試卷 |
評估 - 使用評估工具 |
評估 - 過去的考試試卷 |
我使用了以下行
SELECT STRING_AGG(f.title,' - ') AS path
FROM folders f
GROUP BY f.parent_pk1
但它顯示為
小路 |
---|
評估 |
使用評估工具 - 過去的考試試卷 - 使用評估工具 - 過去的考試試卷” |
任何幫助將不勝感激。
謝謝
嗯。 . . 我認為你想要這樣的東西而不是聚合:
select f.*
from (select first_value(f.title) over (order by position) || '-' || first_value(f.title) over (order by position desc)
from folders f
) f
where folder = 'N';
感謝上面戈登的回答,我找到了我正在尋找的答案。
我對戈登的代碼做了一些改動。 請參閱下文。 我確實需要用更多的數據來測試它,看看它是否完全復制了內容結構。
select f.*
from (select first_value(f.title) over (order by position) || ' > ' ||
f.title
from folders f
where f.folder_ind = 'N'
) f
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.