我有2张桌子。

nodes (nid, ntid, parent, title)


nid是节点ID(主键),ntid是表noteTypes的外键

noteTypes (ntid, name)-该表只有4行


1,预定
2,章
3,文章
4,科


我需要显示特定节点的所有相同级别的父级。示例:我收到nid = 123,这是文章的ID,并且我需要获取所有章节(以便能够在我的node.js应用中选择将文章移到何处)

我已经用3个查询完成了:

1)获取nid = 123的父代ID(返回12,即文章父代的ID)

2)获得nid = 12的父类型(返回2,即本章)

3)获取父类型= 2的所有节点(返回所有章节)

使用此数据库模型,能否仅用1个查询而不是3个查询来完成?

最佳答案

由于知道所需的确切级别,因此可以创建查询(Mysql不允许进行递归,这将允许您动态遍历关系)。

SELECT all_articles.*
FROM nodes AS articles
JOIN nodes AS chapter
  ON articles.parent = chapter.nid
JOIN nodes AS all_articles
  ON all_articles.parent = chapter.nid
WHERE articles.nid = 123;

关于mysql - 数据库邻接列表模型-在一个查询中获取所有相同级别的父级?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22881257/

10-12 13:05