2014-04-05 27 views
1

我有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父ID = 123(返回12,其是所述製品的母體)

2)獲得的nid = 12(返回2父類型的id ,這是章節)

3)獲取父類型的所有節點= 2(返回所有章節)

使用此數據庫模型,只能使用1個查詢而不是3個查詢嗎?

回答

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; 
相關問題