【问题标题】:Having trouble understanding what I am doing wrong with my SQL Joins无法理解我的 SQL 连接做错了什么
【发布时间】:2016-12-13 19:06:02
【问题描述】:

我最近一直在努力提高我的查询技能,为此,我决定制作一个简单的 twitter 克隆。我有两个要加入的表。

用户表
User_ID 主键
用户名
电子邮件
等等……

关注表格(针对关注的用户)
ID 主密钥
FK_Follower(User_ID 的外键)唯一
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();

在我看来,然后我会调用我需要的行值并显示它们,(为全局提要、特定配置文件提要和单个提要完成此操作,所以我知道这在我的视图逻辑中没有任何意义)

使用右连接是我可以显示结果的唯一方法,但是它们是错误的。我很肯定我正在向查询发送与正在使用的个人资料页面相关的正确 $id 值,但我已经尝试了在阳光下的所有连接组合,并且唯一一次显示结果时,它们肯定是不正确的。

我能完成我想做的事吗?这可能是我的表结构的问题吗?还是只是我的查询逻辑?我有一种感觉,我的加入知识存在差距,如果有人愿意开导我,我需要解决这个问题。谢谢。

【问题讨论】:

    标签: codeigniter join


    【解决方案1】:

    试试这个

        $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();

    【讨论】:

    • 虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
    • @kundanPicker 我已多次尝试此查询,但没有结果。它最终会显示数据库中所有已替换某人的人。
    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多