使用Codeigniter进行多次连接

时间:2014-07-07 14:30:40

标签: mysql sql codeigniter

我在codeigniter中使用活动记录

进行了此查询
$this->db->select('products_main.*, images_main.*, items_main.*, product_tags.*');
$this->db->from('products_main');
$this->db->join('images_main','products_main.product_tag = images_main.img_tag AND products_main.product_id = images_main.pro_img_id');
$this->db->join('items_main','products_main.product_id = items_main.pro_items_id');
$this->db->join('product_tags','products_main.product_id = product_tags.pro_tag_id');
$this->db->where('products_main.product_id',$p_id);
$this->db->where('products_main.status','active');
$this->db->group_by('products_main.product_id');
$query = $this->db->get();

我的目标是:

  • 从products_main中抓取一个与$ p_id的输入相匹配的产品

  • 从images_main表格中抓取该产品的所有照片

  • 抓取所有包含我找到的产品的product_id的商品

  • 抓住product_tags表格中与我找到的产品的product_id相匹配的行。

我在这里开始测试小提琴,但还没有填写查询部分,因为我不知道该放什么。 fiddle

1 个答案:

答案 0 :(得分:1)

您的查询中没有任何问题,但是当您按product id分组时,您可能只会获得一个结果,但您可以按image_id进行分组,我创建了相同的结果在我的localhost数据库中你创建了一个小提琴并尝试了你的解决方案,你看到的唯一问题就是你没有在左边加入,查询找不到任何完全匹配,所以尝试加入左边,也是我已经改变了你的查询以防止数据库错误与你的小提琴中的给定结构,所以如果你在数据库中有这样的更改它(注释它们):

$this->db->select('p.*, im.*, i.*, pt.*');
$this->db->from('products_main as p');    
// img_tag -> image_tag
$this->db->join('images_main as im',
    'p.product_tag = im.image_tag
     AND p.product_id = im.product_id','left'); // pro_img_id -> product_id  
$this->db->join('items_main as i',
    'p.product_id = i.product_id','left'); // pro_items_id -> product_id
$this->db->join('product_tags as pt',
    'p.product_id = pt.product_id','left'); // pro_tag_id -> product_id
$this->db->where('p.product_id',"23"); // i have given example id as 23
$this->db->where('p.status','active');
$query = $this->db->get();
return $query->result_array();
相关问题