我有三张桌子。
模块名称(模块id、模块名称、模块内容)
模块组(组id、组名称、组内容)
模块到组(模块id,组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
第一组
模块2
第2组
模块3
第2组
模块4
但我要求这样:
第一组
模块1
模块2
第2组
模块3
模块4
很久以前我就做了这样的东西。
我记得我曾经为每一个搜索引擎使用过,但我当时拥有的资源现在已经不再是谷歌的前十大搜索结果了。
(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/