php - 在 php - mysql 中嵌套 "group by"和 "for (each)"语句

标签 php mysql

我有一个由许多表组成的数据库。第一个表是关于“文本”的,具有一些属性。另一张表是关于传达这些文本的“手稿”(每个文本可以由多个手稿来传达)。这两个表通过“传送”表链接。

当我执行 mysql 查询时,我按 textID 对文本进行分组。但是,我想打印所有传达相同文本的手稿。我想我应该写一些类似“对于每个textID,显示所有手稿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

关于php - 在 php - mysql 中嵌套 "group by"和 "for (each)"语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55701576/

相关文章:

MYSQL 在更新时自动将列实体增加 1?

php - PDO 使用 prepade 语句获取数据

php - 使用 WordPress 3.4.1 自定义页面

特征的 PHP instanceof

php - 对mysqli_fetch_assoc()进行故障排除

sql - 为 DATE_SUB 的单元参数使用存储过程参数

php - 在 POSTMAN 中添加 curl -u

登录系统生成的PHP空 session 文件

php - REST API 安全设计

mysql - 开始在 Magento 数据库上优化表,但站点已关闭。我可以杀死它吗?如何杀死它?