我正在用Codeigniter和MYSQL構建一個CMS。並有一個這樣的桌子。要打印輸出這樣Mysql一個父多個子結果不重複父行
foreach($parent as $parentData):
echo"<h4>".$parentData->parentName."</h4>";
echo"<ul>";
foreach($child as childData):
echo"<li>".$childData->childName."</li>";
endforeach;
echo"</ul>"
endforeach;
產生此
<h4>Movie</h4>
<ul>
<li>Harry Potter</li>
<li>Avengers</li>
<li>Fury</li>
</ul>
<h4>Food</h4>
<ul>
<li>Pizza</li>
<li>Burger</li>
</ul>
<h4>Sports</h4>
<ul>
<li>Foot Ball</li>
<li>Cycling</li>
</ul>
代碼的任何調整被歡迎
CREATE TABLE parent
(`parentId` int, `parentName` varchar(50));
INSERT INTO parent
(`parentId`, `parentName`)
VALUES
(1, 'Movie'),
(2, 'Food'),
(3, 'Sports');
CREATE TABLE child
(`childId` int, `parentId` int,`childName` varchar(50));
INSERT INTO child
(`childId`, `parentId`, `childName`)
VALUES
(1, 1, 'Harry Potter'),
(2, 3, 'Foot Ball'),
(3, 2, 'Pizza'),
(4, 2, 'Burger'),
(5, 1, 'Avengers'),
(6, 1, 'Fury'),
(7, 3, 'Cycling');
而想要輸出。 因爲我在過去的幾個小時裏一直在嘗試這個。 在此先感謝。
更新: 我實現了我的代碼作爲CodeGodie建議的答案,並添加了一個這樣的視圖。
foreach ($result as $arr) {
if (!isset($final[$arr["parentName"]])) {
$final[$arr["parentName"]] = array();
}
array_push($final[$arr["parentName"]], $arr);
}
foreach ($final as $parent=> $childs) {
echo $parent."<br>";
foreach ($childs as $child) {
print_r($child) ;
}
}
現在,我得到的結果,我期待
我不沒有得到它,你需要輸出,但是你提供的查詢是'INSERT'和'CREATE'查詢,而不是'SELECT',你希望我們提供'SELECT'查詢? – Epodax
我正在搜索選擇查詢。我已經嘗試了兩個表的左連接,但是自從父表重複使用後,我無法在foreach循環中使用它。 –
好吧,是的,這是一個加入如何工作... – thebjorn