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 查询结果的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter MySQL a Join Query 与结果中的列名冲突

使用 Mysql 和 Codeigniter 连接 4 个表

PHP Codeigniter MySQL 查询 - 将 4 个表连接在一起,其中 3 个表使用每个表中的一列分组

如何使用Codeigniter从Join 2表中获取ID数据?

mysql慢查询中的Codeigniter会话查询

在codeigniter中一起更新和加入查询?