哪个加入1:很多关系?

时间:2011-08-01 16:09:34

标签: php mysql codeigniter join

这是我的数据库架构和我尝试链接的表格,我尝试使用 LEFT 加入,但现在它正在为每个匹配的行创建新结果。

http://i.imgur.com/Ovsau.png

我目前正在构建我的查询,现在尝试将这些表连接在一起(程序 - > Procedure_event - >资源 - > Med_item)

在这样的场景中:

  

e.g。过程X有3行procedure_events

我希望数据在一条记录中返回给我,但是包含构成该记录的所有行。

但它会返回3行结果,如下所示:

  • 程序X - procedure_event第1行
  • 程序X - procedure_event第2行
  • 程序X - procedure_event第3行

因此查询结果应为过程X - procedureevent行1,2,3

这是使用Active Record的Codeigniter PHP框架中的代码:

$this->db->join('procedure_event', 'procedure.procedure_id = procedure_event.procedure_id' , 'left');

由于

1 个答案:

答案 0 :(得分:1)

这是LEFT JOIN的工作原理。

  

因此查询结果应该是Procedure X - procedureevent rows 1,2,3

我认为你需要这个:How do I get a count of associated rows in a left join in MySQL?

MySQL无法返回二维数组或合并行。如果您需要所有“procedureevent行1,2,3”,那么只需遍历结果集,就像通常那样,并添加一个小的+图标,用AJAX获取过程事件。