2014-11-20 220 views
-1

我需要使用3个表进行查询,我遇到了一些麻烦。 我已经在我的项目3个表:Codeigniter活动记录 - 查询3表

projects,​​和categories

projects

  • id_project
  • 标题
  • 日期

​​

  • id_proj_cat
  • id_project
  • id_category

categories

  • id_category

我已经做了一个连接查询,但结果是一个具有相同的project_id的数组显示多次。 我需要的是一个更高效的查询,它可以列出每个project_id里面的数组,以及它的类别和名称。类似的东西。

我可以做一个单独的查询,但我试图在一个单一的查询实现。

+0

其简单的加入query.what你有试过吗? – 2014-11-20 20:55:04

+0

是的,我有很多次出现同一个项目。我需要的是每个项目数组中的数组列表。我可以做一个单独的查询......但我试图在一个单一的查询中实现。 – 2014-11-20 21:02:57

+0

你正在寻找什么不清楚你的问题。请在你的问题中显示你想要的数组结构。 – 2014-11-21 05:15:18

回答

1

试试这个

$this->db->from("projects p"); 
    $this->db->select("p.id_project,c.categories,c.name"); 
    $this->db->join("projects_categories pc","pc.id_project = p.id_project","LEFT"); 
    $this->db->join("categories c","c.id_category = pc.id_category","LEFT"); 
    $result=$this->db->get()->result_array(); 

现在$结果是你的阵列。

+0

我会努力的!:)谢谢 – 2014-11-20 21:23:12

+0

进出口仍面临着同样的问题。 :([0] =>数组( [id_projecto] => 29 [标题] =>标题1 [数据] => 2012年12月12日[id_categoria] => 2 [nome_categoria] => 架构) [1] =>数组( [id_projecto] => 29 [标题] =>标题1 [数据] => 2012年12月12日[id_categoria] => 3 [nome_categoria] =>康复 ) [2] =>数组( [id_projecto] => 30 [标题] =>标题 2 [数据] => 2021年12月9日[id_categoria] => 4 [nome_categoria] => 设计) [3] =>数组( [id_projecto] => 30 [标题] =>标题 2 [数据] => 2021年12月9日[id_categoria] => 3 nome_categoria]如果与projects_categories表的关系包含所有id_project,如果每一个名字都有id_category然后你可以使用内部join.Just替换词''LEfT'with INNER' => – 2014-11-20 22:19:57

+0

再生。其他明智的选择,在您的statement.like鲜明id_project选择'$这个 - > DB->选择( “DISTINCT(p.id_project)c.categories,c.name”);“ – 2014-11-21 09:14:51

1

试试这个:

$this->db->select('p.id_project,c.categories,c.name'); 
$this->db->from('projects p'); 
$this->db->join("projects_categories pc","p.id_project = pc.id_project","INNER"); 
$this->db->join("categories c","pc.id_category = c.id_category","INNER"); 
$query = $this->db->get(); 
return $query->result_array();