现在我应该简要解释一下我想做什么。
每个容器内有一个“容器”表(传输)和另一个“项目”表(文档)。
我想输出一个列出所有容器的表,每行末尾有一列,其中包含容器中项目的逗号空格列表。目的是实现对每个容器中的项目的简单搜索(使用数据表插件)。
我当然可以查询我的容器表,并且在“PHP while 循环”期间我可以二次查询项目表中匹配的容器 ID。然后我连接每行的项目,但我想避免多次 SQL 调用。
所以我创建了一个右连接(我在下面编写了一个简化版本)...
SELECT transmittal.*, transmittal_documents.*
FROM transmittal RIGHT JOIN
transmittal_documents
ON transmittal_documents.transmittal_id = transmittal.transmittal_id
对 PHP while 循环进行编码以仅收集表中唯一的“容器”值,同时使用 PHP join 之类的方法连接“项目”的最佳方法是什么。
或者,也许我可以在用 PHP 处理之前用 SQL 执行此操作?
预先感谢您的帮助。
最佳答案
最好的方法是使用 group_concat
在 SQL 中执行此操作:
SELECT t.*, group_concat(td.item) as items
FROM transmittal t LEFT JOIN
transmittal_documents td
ON td.transmittal_id = t.transmittal_id
GROUP BY td.transmittal_id;
我认为你的意思是左连接
而不是右连接
。 左连接
将保留transmittal
表中的所有内容以及另一个表中的所有匹配项。
关于PHP/MYSQL - 仅显示表中的左连接项,但连接列中的右连接值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21114138/