【发布时间】:2015-10-24 08:05:45
【问题描述】:
我有 3 个包含这些相关字段的表
帖子 (id,title)
标签 (id,name)
tags_map (id,id_post,id_tag)
我正在尝试这样:
$this->db->select('posts.*,tags.name');
$this->db->from('posts');
$this->db->join('tags_map', 'tags.id_post = posts.id');
$this->db->join('tags', 'tags.id = tags_map.id_tag');
$this->db->group_by('posts.id'); // I can comment this line and same result
看起来是这样,但是即使是多个tags_map记录,它也只返回一个,
如何在一个查询中全部返回?
-编辑-
我有点解决了,但需要 php 处理
$this->db->select('posts.*,group_concat(tags.name) as thetags');
这将返回一个字段 thethags = 'tag1,tag2,tag3'
但我想在标签表上获取其他文件..
并且,例如:
$this->db->select('posts.*,group_concat(tags.name) as 'thetags',group_concat(tags.relevance) as 'therelevances');
我不确定我是否可以信任订单?
【问题讨论】:
-
旁注:从映射
tags_map (id,id_post,id_tag)中抛出id。取而代之的是PRIMARY KEY(id_post, id_tag), INDEX(id_tag, id_post)。 -
你是在问我还是让我知道这个?
-
建议对该表进行改进。 (以及一般的映射表。)
-
对不起,我不太明白你的意思(我更像是一个前端开发人员),你想详细说明一下答案吗? :)
-
INDEXes(包括PRIMARY KEYs)是数据库非常重要的一个方面。这就是让他们快速的原因。我正在提出与您提出的问题无关的建议(因此是“评论”,而不是“答案”)
标签: php mysql codeigniter join activerecord