2016-01-11 22 views
0

我有一個結構的兩個數據庫表如下:檢索嵌套的CMS站點地圖 - SQL查詢?

page_info

  • PAGE_ID(INT)
  • parent_page_id(INT)
  • PAGE_TITLE(VARCHAR)

page_order

  • page_order_id(INT)
  • parent_page_id(INT)
  • PAGE_ID(INT)
  • page_order(INT)

(FYI的page_info表已經在很大程度上借鑑什麼是真正的削減在這裏,這些是唯一的領域)

有沒有一種方法來拉出一個扁平結構中的整個嵌套結構,正確的順序與一個,rel異常快速的SQL查詢?

我試圖解決的實際問題是我們目前的實施速度太慢,並且與我們的CMS結合得太緊密。一個沉重而醜陋的遞歸PHP函數目前用於構建數據,並且它在我們的應用程序中造成了瓶頸,因此或許SQL查詢加速它不一定是解決方案,但我很想看到人們的想法。

+0

MySQL不能返回嵌套結果集。你查詢數據庫,你會得到一些結果。如果生成站點地圖的PHP腳本很慢,請考慮在隊列上執行它,然後緩存結果。 –

+0

深知「MySQL無法返回嵌套結果集」的事實。在這種情況下,我應該更清楚 - 我需要將結果集放在一個平坦的結構中。 – davo0105

+0

這是你想要的嗎? http://stackoverflow.com/questions/20215744/how-to-create-a-mysql-hierarchical-recursive-query –

回答

0

下面的查詢將返回所有頁面的設置,然後使用PHP,你可以使用它。

SELECT page_info.page_id AS page_id, parent_page_id, page_title, page_order_id, parent_page_id, page_order 
    FROM page_info INNER JOIN page_order 
    ON page_info.page_id = page_order.page_id 

在這裏你需要嵌套循環來閱讀它。

[注:如果它不涉及到你的問題,然後讓我知道]