sql - 如何将表与自身连接以获取数据的层次结构
问题描述
我的数据库的一部分包括一个保存有关块的信息的表:
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?