php - Codeigniter 2联接一对多查询3个表

标签 php mysql sql join codeigniter-2

我有3张 table

table1:文档(id、代码、内容)

表2:文件(id、代码、文件名)

table3:标签(documentId,标签)

在我的页面上,我必须在表格 View 中显示所有文档。喜欢

代码|内容

123 |这是一个包含文件 **files.filename** 和标签 **tags.tag** 的示例文档

每个文档可以有多个文件和标签

这是我当前的代码。

return $this->db
    ->select('t1.id, t1.barcode, t1.sub, t1.source_type, t1.sender, t1.address, t1.description, t1.receipient, t1.status, t2.id as fileId, t3.tag as docTag')
    ->select('DATE_FORMAT(t1.datetime_added, \'%m/%d/%Y-%h:%i %p\') as datetime_added', FALSE)
    ->from('documents as t1')
    ->join('files as t2', 't2.barcode = t1.barcode', 'left')
    ->join('tags as t3', 't3.id = t1.id')
    ->order_by('id', 'desc')
    ->get()->result_array();

最佳答案

您可以使用此查询,它会对您有所帮助

SELECT `doc`.`id`,
       (select GROUP_CONCAT(`tag`) from `tags` `tag` where `docid`=`doc`.`id` group by `docid`) as `tags`, 
      (select GROUP_CONCAT(`filename`)  from `files` where `docid`=`doc`.`id` group by `docid`) as `file`
FROM `document` `doc` 

如果您的文档有多个文件或标签,它将显示文档表中的一条记录,如果有多个,标签和文件名将以逗号分隔

关于php - Codeigniter 2联接一对多查询3个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50579777/

相关文章:

php - 如何设置 cookie 然后在 PHP 中重定向?

php - 获取查询中数据库存储号码的前 5 位数字

php - 单个查询中的多个 mysql 更新

sql - 如何在oracle中执行db脚本并输出日志文件

php - 具有两个提交按钮和两个不同操作的 HTML 表单

Php - 以单词形式返回 count()

sql - 数据库中的大量列

mysql - 将同一个表中的 2 个 SQL 查询合并为 1 个

php - 以 root/普通用户身份运行 eJabberd 注册用户命令

Mysql join覆盖提交id