我有以下数据库结构:
RELATIONSHIP_TABLE
- id << primary key
- id_ancestor << foreign key to the same table
- id_entry << foreign key to "ENTRY_TABLE"
ENTRY_TABLE
- id
- name
...
表“RELATIONSHIP_TABLE
”中的层次结构是线性的。这意味着记录最多只能是另一条记录的祖先。例子:
1. record1
2. record2 <- record3 <- record4
3. record5 <- record7 <- record9 <- record12
特定层次结构中的每条记录都具有相同的“id_entry
”。现在,我想找到具有特定“id_entry
”的最后一个后代。以下示例的结果将是:
1. record1
2. record4
3. record12
有人知道解决方案吗?
提前致谢:)
QStormDS
答案 0 :(得分:2)
SELECT *
FROM relationship_table rt
WHERE rt.id_entry = 42
AND NOT EXISTS (
SELECT * FROM relationship_table nx
WHERE nx.id_entry = 42 -- you can possibly omit this clause
AND nx.id_ancestor = rt.id -- No children poining to rt ...
)
;