【问题标题】:Join two result in codeigniter在 codeigniter 中加入两个结果
【发布时间】:2016-10-24 13:29:44
【问题描述】:

我用 codeigniter 开始了一个新项目,我为用户和帖子创建了三个表,并喜欢这样

用户表有这些记录

  1. 用户 ID
  2. 全名
  3. 用户名

post 表有这些记录

  1. Post_ID
  2. 标题
  3. 用户 ID

那个 user_id 字段保存创建者 user_id

和喜欢的桌子

  1. Like_ID
  2. 用户 ID
  3. Post_ID

我想加入这三个表,我可以做到,但我需要加入两个这样的结果,我不知道该怎么办

  $this->db->select('*');
  $this->db->from('Post');
  $this->db->join('User', 'User.User_ID = Post.User_ID', 'left');
  $query = $this->db->get();
  return $query->result();

还有这个

  $this->db->select('*');
  $this->db->from('Like');
  $this->db->where('User_ID' = $id);
  $query = $this->db->get();
  return $query->result();

然后将这些结果与在一起

请帮帮我

【问题讨论】:

  • 你到底想要什么?你能提供虚拟数据来解释你想获得什么吗?您可以使用单个 SQL 查询来做到这一点吗?
  • 你到底想要什么数据?以及要比较的领域是什么?
  • 我需要加入第一个结果和第二个结果,或者我需要选择所有帖子,并且我了解当前用户喜欢哪个帖子
  • @AmirNahravan 您能否详细说明您期望的答案。例子更好。

标签: php mysql codeigniter join


【解决方案1】:

您可以在单个 codeigniter 查询中连接多个表

$this->db->select('*');
$this->db->from('Post');
$this->db->join('User', 'User.User_ID = Post.User_ID', 'left');
$this->db->join('Like','Like.Post_ID = Post.Post_ID AND User.User_ID = $id','left');
$query = $this->db->get();
return $query->result();

【讨论】:

    【解决方案2】:

    如果我正确理解您的问题,您想确定当前用户喜欢哪些帖子。 sql 语句如下所示:

    select p.*, u.*, l.user_id as like_user_id
    from post p
    inner join user u on u.user_id=p.user_id    -- I do not think you need a left join here
    left join `like` l on p.post_id=l.post_id and l.user_id=$id 
    

    like 表使用公共 post_id 字段左连接到 post 表。如果 l.user_id 为空,则当前用户不喜欢该帖子。根据上述查询和您的第一个 codeigniter 代码,您应该能够创建此查询的 codeigniter 版本。

    【讨论】:

      猜你喜欢
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-05
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      相关资源
      最近更新 更多