基于字段的PHP SQL循环结果
我正在创建一个动态记录集,其中我将一些值填充到用于选择所有签名记录的查询中。基于字段的PHP SQL循环结果
接下来我需要循环并对结果进行分组,但我不确定如何按查询中使用的值进行分组。
参考查询:
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循环是解决方案吗?
如果您在报告输出中讨论可视化分组,那么您需要跟踪每个循环迭代的值,然后在检测到更改时发出视觉中断。事情是这样的:
$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
是的,我相信这是我正在寻找的。谢谢! – Burndog 2012-03-29 16:06:32
SELECT fldItem, fldDescription, fldRank,fldType FROM tableName
WHERE fldType IN (33, 34, 36) ORDER BY fldType, fldRank
这将首先按fldType进行分组,然后按fldRank进行分组。在您的PHP代码中,只需记住最后一个fldType,并在其更改时添加一个新组。现在所有的fldTypes将被组合在一起,所以你可以按顺序循环遍历结果。
是的,这将返回上面引用的方式的结果,但我试图让组如“---- ----“休息。在实际情况下,这是因为结果(每个组)要设置为格式化表格。 – Burndog 2012-03-29 15:54:49
您是否尝试过用GROUP BY不同的SQL语句?那会以小组形式返回结果。然后你可以使用一个循环,当Type改变时,让它放弃一个换行符,或者任何你想区分不同类型的东西。 – kevingreen 2012-03-29 15:41:05
GROUP BY不会*以组的形式返回结果,它将为组返回单个结果。也就是说,在这里使用GROUP BY会导致返回三行。 – 2012-03-29 15:52:21
是的最初我试图GROUP BY,但发现它不起作用时使用选择IN() – Burndog 2012-03-29 15:56:20