【发布时间】: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