[英]How to make recordset (categories and subcategories)
我有2張桌子:
categories (id, categoryName)
, menu (id, menuname, category_id)
我想顯示所有類別,這些類別在menu
有一個或多個記錄。 並且在每個categoryName
之后顯示5 menuname
。
是否可以在一個記錄集中執行此操作?
謝謝!
這些是我的2個記錄集:
$query = "select a.id, a.name from categories as a where a.id in (select count(*) from menu as b on b.category_id = a.id)";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
echo $row['name'];
$category_id = intval($row['id']);
$query = "select menuname from menu where category_id = $category_id limit 0, 5";
$resultmenu = mysql_query($query);
while ($rowmenu = mysql_fetch_array($resultmenu)) {
echo $rowmenu['menuname'];
}
}
如上所述,我不確定“ 在每個categoryName之后顯示5個菜單名 ”的含義 。
但是要按字母順序顯示所有類別/菜單名稱的列表,可以使用以下命令:
SELECT C.categoryName,
M.menuname
FROM categories C
INNER JOIN menu M ON M.category_id = C.id
ORDER BY C.categoryName,
M.menuname
更新 :
目前,您的第一個查詢最多只會返回一行。 子查詢當前正在計算menu
行數,然后使用該圖從類別表中拉出一行,這不是您想要的。
以下查詢聯接到menu
表上,以確保至少存在一項,然后按category
字段分組以確保每個項僅返回一次:
$query = "select a.id, a.name from categories as a inner join menu as b on b.category_id = a.id group by a.id, a.name"
更新2
抱歉,我現在明白了。 不,我認為不可能在單個查詢中實現所需的功能。 即使有可能,我也不會推薦它。 查看您的代碼,您只希望為每組菜單項打印一次categoryName
。 如果您能夠像這樣在一個結果集中拉回categoryName
和menuname
項:
| categoryName | menuname |
---------------------------
| category1 | menu1 |
| category1 | menu2 |
| category1 | menu3 |
| category2 | menu4 |
遍歷結果時,您將需要手動檢查categoryName
何時更改,以便針對該組menuname
項目將其打印一次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.