【实践】基于 query 实现的项目信息管理 + 面板视图

本贴最后更新于 450 天前,其中的信息可能已经时移世易

我想解决的需求

本人从事金融行业,对于项目管理有比较大的需求,每个项目报告里有自己的特殊内容,但也有共性元素,例如主体评级、行业等。我希望能有个文档界面是能够汇总我某个文档树下的所有项目的基本信息,是根据我每个文档里某级标题进行汇总。

目前思源笔记属性视图还没等到,而且让我手动去编辑属性是没有在正文里编辑 markdown 来得舒服的。

最后呈现的结果类似 Obsidian 里的 dataview 吧,我看之前也有群友发求助帖,没得到解答,所以自己试了一下。

最后得到类似如下的结果:

image

项目管理的文档长这样:

image

打开每个项目的内容长这样:

image

QUERY+SQL 代码

首先要安装 query 插件,然后 SQL 代码如下:

image

SELECT
    '[' || b0.content || '](siyuan://blocks/' || b0.id || ')' AS __00____pre__项目名称,

    MAX(CASE 
        WHEN b1.parent_id IN (SELECT id FROM blocks WHERE content LIKE '主体评级')
            THEN '[' || b1.content || '](siyuan://blocks/' || b1.id || ')'
        ELSE NULL
    END)
    AS __02____pre__主体评级,

    MAX(CASE 
        WHEN b1.parent_id IN (SELECT id FROM blocks WHERE content LIKE '行业')
            THEN '[' || b1.content || '](siyuan://blocks/' || b1.id || ')'
        ELSE NULL
    END)
    AS __03____pre__行业,

    MAX(CASE 
        WHEN b1.parent_id IN (SELECT id FROM blocks WHERE content LIKE '股权结构')
            THEN '[' || b1.content || '](siyuan://blocks/' || b1.id || ')'
        ELSE NULL
    END)
    AS __04____pre__股权结构,

    MAX(CASE 
        WHEN b1.parent_id IN (SELECT id FROM blocks WHERE content LIKE '问题')
            THEN '[' || b1.content || '](siyuan://blocks/' || b1.id || ')'
        ELSE NULL
    END)
    AS __04____pre__问题

FROM blocks AS b1 INNER JOIN blocks AS b0 ON b1.root_id = b0.id
WHERE 
(b1.parent_id IN (SELECT id FROM blocks WHERE type = 'h'))
AND (b0.id IN (SELECT root_id FROM blocks WHERE hpath LIKE '%项目整理/%'))
  
GROUP BY b1.root_id

写在最后

  1. SQL 的格式不是很规范,我也没学过,单纯按自己能读懂的格式写的
  2. 标题下的信息内容只能读取 1 行,第 2 行的信息读取不了,应该也有代码能解决,我懒得写了
  3. 本文主要是希望能启发下各位群友,我知道还有修改时间等可以加上去的需求,我没有完善,也不是我的需求
  4. 看好思源笔记,求属性视图赶紧出!

以上~

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22337 引用 • 89378 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...