php - 在 php - mysql 中嵌套“group by”和“for (each)”语句
问题描述
我有一个由许多表组成的数据库。第一个表是关于“文本”的,带有一些属性。另一个表格是关于传达这些文本的“手稿”(每个文本可以由多个手稿传达)。这两个表由“传送”表链接。
当我进行 mysql 查询时,我按 textID 对文本进行分组。但是,我想打印所有传达相同文本的手稿。我想我应该写一些类似“对于每个文本ID,显示所有手稿ID”的东西,但我不知道如何正确编写代码。
我在这一点上:
FROM text tx, place pl, print pr, manuscript ms, conveys cv
WHERE conditions
GROUP BY txId
(它工作正常。但问题如下)
while ($row = mysqli_fetch_array($result)) {
if($row['txId']!=0)
for($i=0; $i.'<'.$row['msId'].'.lenght'; $i++) {echo ($row['msId']) . "<br>";}
此代码打印出第一个 msId 的次数与我在数据库中拥有的 msId 的总数一样多!
解决方案
在这种情况下,您需要使用Aggregate (GROUP BY) Function,如下所示:
SELECT
<...other selects...>
GROUP_CONCAT(DISTINCT ms.msId ORDER BY ms.msId ASC SEPARATOR ', ') as msIds
FROM text tx, place pl, print pr, manuscript ms, conveys cv
WHERE <...conditions...>
GROUP BY tx.txId
推荐阅读
- java - 如何获取线性布局的子节点的位置?
- javascript - 我应该如何将 Lodash 过滤器方法重写为 Ramda 过滤器?
- node.js - 如何在 NodeJS 中的代理后面使用 DocumentDB
- php - Wordpress 和 AWS - Elastic Beanstalk 卡在“上传应用程序版本”中
- python - 如何将两个嵌套列表的每个元素相乘?
- php - 循环增加 3 PHP 和 MYSQL 的行
- excel - Excel向下填充数据
- php - 为什么我的 CSV 文件从第二行开始填充?
- mongodb - MongoDB 中的 $lookup 提供了意外的数据结构结果
- powershell - 协助将 MXTSESSIONS 文件导入 MobaXterm