在php中嵌套“ group by”和“ for(每个)”语句-MySQL

时间:2019-04-16 06:08:27

标签: 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的总数一样多!

1 个答案:

答案 0 :(得分:0)

在这种情况下,您需要使用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