codeigniter Mysql join 查询结果

Posted

技术标签:

【中文标题】codeigniter Mysql join 查询结果【英文标题】:codeigniter Mysql join Query result 【发布时间】:2017-09-27 06:41:51 【问题描述】:

我有三张桌子。 用户, 产品(user_id 是外键), reviews_ratings(user_id & product_id 是外键)

mysql查询是

$pid = some id;
$this->db->select('*');
$this->db->from('reviews_ratings');
$this->db->join('users', 'users.id = reviews_ratings.user_id');
$this->db->join('products', 'products.id = reviews_ratings.product_id ');
$this->db->where('reviews_ratings.id >', $pid);
$this->db->order_by('reviews_ratings.id', 'DESC');
$this->db->limit(1);

结果,

Array ( [0] => stdClass Object ( [id] => 14 [title] => blaaa [review] => blaaaa [rate] => 4 soooo on))

[id]=>14 不是 review_ratings 表的 id。 14 是 product_id。一切都很好,除了这个[id] 值。我想要[id] 中的 review_ratings id 值。 请帮我纠正它。

【问题讨论】:

【参考方案1】:

尝试使用 group by...

$pid = some id;
$this->db->select('*');
$this->db->from('reviews_ratings');
$this->db->join('users', 'users.id = reviews_ratings.user_id');
$this->db->join('products', 'products.id = reviews_ratings.product_id ');
$this->db->where('reviews_ratings.id >', $pid);
$this->db->order_by('reviews_ratings.id', 'DESC');
$this->db->group_by('reviews_ratings.id');
$this->db->limit(1);

【讨论】:

它返回 id=14 因为您正在检查products.id = reviews_ratings.product_id 或显示表格更新您的问题 问题已解决。感谢您的时间和评论@gopalbhuva【参考方案2】:

通过添加此行解决问题

$this->db->select('products.*,users.*,reviews_ratings.*');

而不是这个

  $this->db->select('*');

【讨论】:

以上是关于codeigniter Mysql join 查询结果的主要内容,如果未能解决你的问题,请参考以下文章

mysql join 查询图

mysql 8 新特性三 Hash Join / 联接查询算法之Hash Join (五)

MySQL 查询优化与许多 JOINS 的查询

JOIN 语法中的 MySQL 相关子查询

在 Wordpress 中使用 JOIN 进行高级 MySQL 查询

MySQL 查询:限制 JOIN