[英]MySQL select query with sub-select as column
我目前正在使用以下PHP代碼:
$pages = $Database->query("SELECT page_id FROM pages WHERE page_parent = '0'");
$pages = $pages->fetchAll(PDO::FETCH_ASSOC);
foreach ($pages as $page_key => $page) {
$pages[$page_key]['page_children'] = $Database->prepare("SELECT page_id FROM pages WHERE page_parent = :id");
$pages[$page_key]['page_children']->execute(array(
':id' => $page['page_id']
));
$pages[$page_key]['page_children'] = $pages[$page_key]['page_children']->fetchAll(PDO::FETCH_ASSOC);
}
echo '<pre>';
print_r($pages);
die();
但是,它正在做什么應該是很明顯的:
有沒有一種方法可以將其組合為單個SQL語句?
更新以顯示所需的輸出:
Array
(
[0] => Array
(
[page_id] => 1
[page_children] => Array
(
[0] => Array
(
[page_id] => 2
)
[1] => Array
(
[page_id] => 3
)
)
)
)
您可以使用INNER JOIN
SELECT a.*
FROM pages a
INNER JOIN pages b on a.page_parent = b.page_id
where b.parent_page ='0';
如果您還希望沒有孩子的父母可以使用左聯接
SELECT a.*
FROM pages a
LEFT JOIN pages b on a.page_parent = b.page_id and b.parent_page ='0';
或者你可以使用工會
SELECT a.*
FROM pages a
INNER JOIN pages b on a.page_parent = b.page_id
where b.parent_page ='0'
union all
SELECT *
FROM pages
WHERE page_parent = '0'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.