现在,我应该简要解释一下我想做什么。
我在每个容器中都有一个“容器”表(传递)和另一个“项目”表(文档)。
我想输出一个列出所有容器的表,并在每行的末尾带有一列,其中包含容器中各项的逗号空间列表。目的是实现每个容器中项目的简单搜索(使用datatables插件)。
我当然可以查询我的容器表,而在“ 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中执行此操作?
提前感谢你的帮助。
最好的方法是使用以下命令在SQL中执行此操作group_concat
:
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;
我想你的意思left join
不是right join
。在left join
将保持一切都在transmittal
表与其他表中的所有比赛一起。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句