我使用事件记录在 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 ,但尚未填写查询部分,因为我不知道要放什么。 fiddle
最佳答案
您的查询没有任何问题,但当您按产品 ID
分组时,您可能只会得到一个结果,但您可以改为按 image_id
分组,我在我的本地主机中创建了相同的数据库,您创建了一个 fiddle 并尝试了您的解决方案,我看到的唯一问题是因为您没有在左侧加入,所以查询找不到任何精确匹配,所以尝试加入左侧,我还对您的查询进行了一些更改,以防止 fiddle 中给定结构的数据库错误,因此如果您的数据库中有这样的结构(评论它们),请更改它:
$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();
关于mysql - 使用 Codeigniter 进行多重连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24613060/