我有 3 张 table 。
模块名称(模块 ID、模块名称、模块内容)
module_groups (group_id,group_name,group_content)
module_to_group (module_id,group_id)
我正在使用以下查询来获取结果:
$result = $db->sql_query("select
m.module_id,
m.module_name,
g.group_name
from
" . $prefix . "_mmmodule_names m ,
" . $prefix . "_mmmodule_to_group m2g,
" . $prefix . "_mmmodule_groups g
where
m.module_id = m2g.module_id
and
m2g.group_id = g.group_id
and
g.group_id = g.group_id
order by
m.module_id");
while($row = $db->sql_fetchrow($result)) {
$content .= '<div>' . $row['group_name'] . '</div>';
$content .= '<div>' . $row['module_name'] . '</div>';
}
echo $content;
它的输出是这样的:
第 1 组
模块一
第 1 组
模块二
第 2 组
模块 3
第 2 组
模块 4
但我要求它是这样的:
第 1 组
模块一
模块二
第 2 组
模块 3
模块 4
很久以前我做过类似的东西。 据我所知,我对每个都使用过。但是当然,我当时拥有的资源现在不再是谷歌搜索结果的前 10 名。 (Groupconcat 对我来说不是一个好主意)
最佳答案
$result = $db->sql_query("select m.module_id, m.module_name, g.group_name from " . $prefix . "_mmmodule_names m , " . $prefix . "_mmmodule_to_group m2g, " . $prefix . "_mmmodule_groups g where m.module_id = m2g.module_id and m2g.group_id = g.group_id and g.group_id = g.group_id order by m.module_id");
$modules = array();
while ($row = $db->sql_fetchrow($result)) {
$modules[$row['group_name']][] = $row['module_name'];
}
foreach ($modules as $groupName => $moduleNames) {
echo "<h2>$groupName</h2>";
foreach ($moduleNames as $moduleName) {
echo "<p>$moduleName</p>";
}
}
只记住最后一个组名是不够的,因为它们可以混合,另一种解决方案可能是在您的查询中为组名添加排序,在这种情况下,您可以确保组不会混合。
关于php - 对于每个类别行产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17264484/