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