这是我无法弄清楚的。我可以让一个连接正常工作。我可以让超过 2 个表工作的唯一方法是在循环中使用嵌套查询。如何从具有多个连接的单个查询中获取结果,但不从我的主表中获取多个列表。
3个表:用户:2个用户;项目:2个项目;技能:6个技能;
这里使用 Codeigniter,所以我会放 CI 语法。
$this->db->select('*');
$this->db->from('projects');
$this->db->join('user', 'user.id = projects.project_principal_id','left');
$this->db->join('projects_skills_bridge', 'projects_skills_bridge.ps_project_id = projects.project_id','right');
//$this->db->group_by('project_id'); // removed the multiple listing problem caused by the above JOIN
$sql = $this->db->get();
现在,当我遍历并获取我的项目(包含用户和技能信息)时,我应该只得到 2 个项目。我能弄清楚如何获得与该项目相关的技能的唯一方法是在循环中使用嵌套查询(没有上面的第二个 JOIN),但我知道这很草率。如果我使用 GROUP 子句,我只会得到我想要的 2 个项目,但只有第一个技能而不是我想要的几个。
输出应如下所示:
用户 Bob 的 Project Alpha - 技能:吉他、键盘、贝斯
用户 Sally 的项目 Beta - 技能:写作、html、发票
我确定这是一个菜鸟问题,所以提前感谢您查看。