无法理解我的SQL连接错误

时间:2016-12-13 19:06:03

标签: codeigniter join

我最近一直试图加强我的查询技巧,为此,我决定制作一个简单的推特克隆。我有两张桌子,我想加入。

用户表
User_ID Pimary键

电子邮件
等...

关注表(对于以下用户)
ID Pimary Key
FK_Follower(User_ID的外键)UNIQUE
FK_Followie(User_ID的外键)UNIQUE

我的逻辑是每行必须有一个唯一的对,例如(16,18 | 18,16 | 14,13),每当用户请求关注时,如果该行已经存在,我将其删除。这允许类似布尔的功能。

我正在为用户关注者创建一个视图(您转到用户页面并单击查看关注者,它会显示谁在关注他们)

自然,为了实现这一点,我知道我需要在User表和Follow表之间使用连接。我使用codeigniter进行查询构建,但对于拥有sql知识的人来说,结构非常容易告诉我发生了什么,所以看起来像这样

  $this->db->select('*');
  $this->db->from('follow');
  $this->db->where('follow.FK_Followie_ID', $id);// look for all rows where someone follows the user $id value passed to this function
  $this->db->join('users', 'users.User_ID = follow.FK_Follower_ID' ,'right');
  $query = $this->db->get();
  return $query->result_array();

在我看来,我然后调用我需要的行值并显示它们(对于全局订阅源,特定的配置文件订阅源和单个订阅源,请执行此操作因此我知道它在我的视图逻辑中没有任何内容)

使用Right join是我显示结果的唯一方法,但是它们是错误的。我很肯定我正在向查询发送与正在使用的配置文件页面相关的正确$ id值,但我已经尝试了在阳光下的每个连接组合,并且它只显示结果,它们肯定是不对的。

我能完成我想做的事吗?这可能是我的表格结构的问题吗?或者它只是我的查询逻辑?我觉得我的加入知识存在差距,如果有人能够如此善意地开导我,我需要解决这个问题。谢谢。

1 个答案:

答案 0 :(得分:0)

试试这个



    $this->db->select('*');  
    $this->db->from('follow');
    $this->db->join('users', 'users.User_ID = follow.FK_Follower_ID' ,'right'); 
    $this->db->where('follow.FK_Followie_ID', $id);
    $query = $this->db->get();  
    return $query->result_array();