73 lines
1.6 KiB
SQL
73 lines
1.6 KiB
SQL
SELECT
|
|
id,
|
|
uuid,
|
|
parent_id,
|
|
parent_uuid,
|
|
content,
|
|
notetype,
|
|
creation_date,
|
|
updated_date,
|
|
lastview_date,
|
|
deleted_date
|
|
|
|
FROM (
|
|
|
|
WITH RECURSIVE parents (
|
|
id,
|
|
uuid,
|
|
parent_id,
|
|
parent_uuid,
|
|
content,
|
|
notetype,
|
|
creation_date,
|
|
updated_date,
|
|
lastview_date,
|
|
deleted_date,
|
|
cycle
|
|
)
|
|
|
|
AS (
|
|
|
|
SELECT
|
|
notes.id,
|
|
notes.uuid,
|
|
note_parents.id,
|
|
note_parents.uuid,
|
|
notes.content,
|
|
notes.notetype,
|
|
notes.creation_date,
|
|
notes.updated_date,
|
|
notes.lastview_date,
|
|
notes.deleted_date,
|
|
','||notes.id||','
|
|
FROM notes
|
|
INNER JOIN note_relationships
|
|
ON notes.id = note_relationships.note_id
|
|
AND notes.notetype = 'note'
|
|
INNER JOIN notes as note_parents
|
|
ON note_parents.id = note_relationships.parent_id
|
|
WHERE notes.id = ? -- IMPORTANT: THIS IS THE PARAMETER
|
|
|
|
UNION
|
|
SELECT DISTINCT
|
|
notes.id,
|
|
notes.uuid,
|
|
next_parent.id,
|
|
next_parent.uuid,
|
|
notes.content,
|
|
notes.creation_date,
|
|
notes.updated_date,
|
|
notes.lastview_date,
|
|
notes.deleted_date,
|
|
parents.cycle||notes.id||','
|
|
FROM notes
|
|
INNER JOIN parents
|
|
ON parents.parent_id = notes.id
|
|
LEFT JOIN note_relationships
|
|
ON note_relationships.note_id = notes.id
|
|
LEFT JOIN notes as next_parent
|
|
ON next_parent.id = note_relationships.parent_id
|
|
WHERE parents.cycle NOT LIKE '%,'||notes.id||',%'
|
|
)
|
|
SELECT * from parents);
|