我正在创建一个动态记录集,其中我将一些值填充到用于选择所有着墨记录的查询中。
接下来我需要循环并对结果进行分组,但我不确定如何按查询中使用的值进行分组。
参考查询:
SELECT fldItem, fldDescription, fldRank,fldType FROM tableName
WHERE fldType IN (33, 34, 36) ORDER BY fldRank
值33,34和36将动态传递给查询。 我的目标是然后有一个循环/重复区域,允许在组中显示所有结果共享相同的fldType
结果应如下所示:
item1, description1, rank1, type33
item2, description2, rank2, type33
item3, description3, rank5, type33
item4, description4, rank6, type33
item5, description5, rank8, type33
--------
item6, descriptionv, rank1, type34
item7, descriptionw, rank2, type34
item8, descriptionx, rank3, type34
item9, descriptiony, rank4, type34
item10, descriptionz, rank5, type34
--------
item11, descriptionA, rank2, type36
item12, descriptionB, rank3, type36
使用do / while循环会显示要显示的所有项目,但不显示任何分组。 ForEach循环是解决方案吗?
答案 0 :(得分:3)
如果您正在讨论报表输出中的可视分组,那么您需要为每次循环迭代跟踪该值,然后在检测到更改时发出视觉中断。像这样:
$last_type = null;
foreach ($records as $record) {
if ($last_type !== null && $last_type != $record->fldType) {
echo '<whatever your visual cue is>';
$last_type = $record->fldType;
}
}
另外,请确保:
ORDER BY fldType, fldRank
答案 1 :(得分:1)
SELECT fldItem, fldDescription, fldRank,fldType FROM tableName
WHERE fldType IN (33, 34, 36) ORDER BY fldType, fldRank
这将首先按fldType分组,然后按fldRank分组。在PHP代码中,只需记住最后一个fldType,并在它发生更改时添加新组。所有fldTypes现在都将组合在一起,因此您可以按顺序遍历结果。