我希望通过(SQL)在子组中创建子组 . 在我的情况下,我想在组细节中制作分类细节,它来自两个不同的列,更多细节,请查看:
我的sql表是这样的:
+----+-------+--------+-------+
| No | data1 | detail | price |
+----+-------+--------+-------+
| 1 | ID1 | Food | $ 100 |
| 2 | ID1 | Drink | $ 25 |
| 3 | ID2 | Drink | $ 25 |
| 4 | ID1 | Snack | $ 50 |
| 5 | ID2 | Snack | $ 50 |
+----+-------+--------+-------+
我想在我的php页面中生成如下结果:
+----+-------+--------+-------+
| No | detail_lunch | price |
+----+-------+--------+-------+
| 1 | Food | |
| | - ID1 | $ 100 |
| 2 | Snack | |
| | - ID1 | $ 25 |
| | - ID2 | $ 25 |
| 3 | Drink | |
| | - ID1 | $ 10 |
| | - ID2 | $ 10 |
+----+-------+--------+-------+
我已尝试使用GROUP CONCAT,如下所示:
Controller :
$d['data'] = $this->db->query("select detail_item, GROUP_CONCAT (detail) detail_lunch
from table ORDER BY detail_lunch ASC");
Views :
<?php
foreach($data->result_array() as $d)
{
?>
<tr>
<td><?php echo $no; ?></td>
<td><?php echo $d['detail_lunch']; ?></td>
<td><?php echo $d['price']; ?></td>
</tr>
<?php
$no++;
}
?>
我上面的代码不起作用,有什么建议可以解决我的问题吗?
谢谢...
2 回答
由于您没有使用聚合函数(将两行值合并为单个值),因此不需要
GROUP BY
,您正在尝试创建数据透视表(将相关列下的两列连接为多行) . 您只需要ORDER BY detail ASC, data1 ASC
,迭代结果集以在更改时显示detail
,否则显示data1
和price
示例:https://3v4l.org/7tVDS
Query:
View:
Result:
或者,您可以操纵数据在视图中的显示方式,例如在详细信息表列_56120中使用无序列表
ul
以及价格 . 通过使用PHP在有组织的关联数组中组织值,以便在视图中显示它们的显示方式 .示例:https://3v4l.org/8sIrR
查询是问题所在 . 从表组中选择detail_lunch详细信息 . 然后,您可以对该结果使用if语句 . 我开始在计算机上工作后,我会更新我的答案 .