数据库邻接列表模型 - 在一个查询中获取所有相同级别的父级?

时间:2014-04-05 13:02:44

标签: mysql sql node.js

我有2张桌子。

nodes (nid, ntid, parent, title)

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

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

  • 1,预订
  • 2,章
  • 3,文章
  • 4,Section

我需要为特定节点显示所有相同级别的父级。示例:我收到nid = 123这是文章的ID,我需要获取所有章节(以便能够选择在我的node.js app中移动文章的位置)

我已经完成了3次查询:

1)获取nid = 123的父ID(返回12,这是文章父级的id)

2)获取nid = 12的父类型(返回2,这是章节)

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

使用此数据库模型,只能使用1个查询而不是3个

来完成

1 个答案:

答案 0 :(得分:0)

由于你知道所需的确切级别,你可以创建一个查询(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;