mysql - 使用 Codeigniter 进行多重连接

标签 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 ,但尚未填写查询部分,因为我不知道要放什么。 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/

相关文章:

codeigniter - ImageMagick 将 PDF 转换为低分辨率 JPG 文件

html - 如何让 CMS 使用我的 css 文件而不是它自己的 css?

php - Joomla安装无限循环删除/备份旧表

java - 如何将 'null' 值插入 blob 字段 (mysql)

c# - 使用 varbinary 使用 FileUpload 将图像检索到数据库

sql - 如何向大型 sql server 表添加列

MySQL INSERT INTO,但 ON DUPLICATE 返回它的 id

c# - 如何获取 LAST_INSERT_ID();

MySql - 如何在选择和分组依据中使用表达式

php - 下载文件时 md5 校验和不匹配