首页 > 解决方案 > 如何将表与自身连接以获取数据的层次结构

问题描述

我的数据库的一部分包括一个保存有关块的信息的表:

CREATE TABLE blocks (
    id_block INTEGER NOT NULL,
    id_type INTEGER NOT NULL,
    id_parent_block INTEGER NOT NULL,
    PRIMARY KEY (id_block),
    FOREIGN KEY (id_type) REFERENCES block_types (id_block_type),
    FOREIGN KEY (id_parent_block) REFERENCES blocks (id_block)
) WITHOUT ROWID;

第一个。我不确定id_parent_block是否是外键,因为它是当前表中存在的键。

它应该反映某种层次结构,其中块内部有块。位于顶部的块的id_parent_block = -1

块中也有单词:

CREATE TABLE words(
    id_word INTEGER NOT NULL,
    str_word TEXT NOT NULL,
    PRIMARY KEY (id_word),
    FOREIGN KEY (id_block) REFERENCES blocks (id_block),
) WITHOUT ROWID;

一个块中可能有单词(或没有)和块(或没有)。

第二。如何获取与块层次结构中的每个块相关联的所有id_word,其中顶部的块不一定具有 id_parent_block = -1?

标签: sqlsqlitehierarchical-datarecursive-query

解决方案


推荐阅读