PHP/MYSQL - 仅显示表中的左连接项,但连接列中的右连接值

标签 php mysql right-join

现在我应该简要解释一下我想做什么。

每个容器内有一个“容器”表(传输)和另一个“项目”表(文档)。

我想输出一个列出所有容器的表,每行末尾有一列,其中包含容器中项目的逗号空格列表。目的是实现对每个容器中的项目的简单搜索(使用数据表插件)。

我当然可以查询我的容器表,并且在“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/

相关文章:

php - 在 Propel 中使用 GROUP_CONCAT (MySQl) 和 WM_CONCAT (Oracle)

php - 如何自动将子域映射到子文件夹

Mysql:选择今天起的所有订单(转换unix时间戳)

python - 将二维数组的前 3 个元素插入 MySql 数据库

mysql - 尝试将值从一个表插入到另一个未找到代理键匹配的表

sql - 为什么这个查询不能正常工作?

php - 如何使用php正确建立文件路径?

mysql - 在 MySQL 中更改表引擎

mysql - 在 SQL 语句中组合 UNION ALL 和 OUTER JOIN

php - Yii2 GridView 和 DetailView 中如何显示有多条关联记录?