簡體   English   中英

如何制作記錄集(類別和子類別)

[英]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 如果您能夠像這樣在一個結果集中拉回categoryNamemenuname項:

| categoryName | menuname |
---------------------------
| category1    | menu1    |
| category1    | menu2    |
| category1    | menu3    |
| category2    | menu4    |

遍歷結果時,您將需要手動檢查categoryName何時更改,以便針對該組menuname項目將其打印一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM