MySQL从桌面上选择父母和孩子

时间:2014-06-13 17:35:46

标签: php mysql sql codeigniter

我有一个包含父页面和子页面的表,其中首页是parent_id = 0,子页面parent_id是另一页面的id。

ID 1 | parent_id 0
ID 2 | parent_id 0
ID 3 | Parent_id 1
ID 4 | parent_id 1
ID 5 | parent_id 0

所以我有

SELECT *
FROM pages AS parent
WHERE parent.parent_id = 0

SELECT *
FROM pages AS sub
WHERE sub.parent_id != 0

以上单独查询的工作。但我确信有一个可能用一个查询列出所有页面。

我正在尝试获取与此类似的列表,将子页面分组到父页面

Main (Title1)
Main (Title2)
     SUB (Title1)
     SUB (Tible2)
Main (Title3)
etc

我一直在尝试使用内连接和左连接,但我无法解决这个问题。

我希望有一些有经验的善良的灵魂会帮助我。 :)

由于

2 个答案:

答案 0 :(得分:0)

尝试以下查询,它有附加列page_type,表示页面类型。

SELECT page.* , IF( (SELECT p.parent_id FROM pages p WHERE p.id = page.id) = 0, "PARENT", "CHILD" ) AS PAGE_TYPE FROM pages AS page

答案 1 :(得分:0)

您可以使用空检查和LEFT JOIN自身:

SELECT IF(parent.ID IS NULL, 'MAIN', 'SUB') as grouping, page.*, parent.*
FROM pages as page
LEFT JOIN pages as parent
ON page.parent_id = parent.ID