我有一个由许多表组成的数据库。第一个表是关于“文本”的,具有一些属性。另一张表是关于传达这些文本的“手稿”(每个文本可以由多个手稿来传达)。这两个表通过“传送”表链接。
当我执行 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/