mysql 加入 FK 未直接链接的第 3 个表


mysql join 3rd table where FK is not linked directly

>我有3张桌子,

一个表具有第二个表的 FK 的数据,第二个表具有第三个表的 FK。

现在我想通过连接第三个表来获取第一个表的数据,但是第一个表和第三个表没有直接链接,

下面是我的编码点火器模型,

public function openinfo($openid)
{
    $this->db->join('sc_users', 'sc_users.user_id = sc_class.user_id','INNER');
    $this->db->join('sc_companies', 'sc_companies.company_id = sc_class.company_id','LEFT');
    $this->db->where('sc_class.open_id', $openid);
    return $this->db->get('sc_class')->row();
}

sc_users有名为 sc_usergroupid 的 FK,它是名为 sc_usergroups 的表的 PK

当上面的模型函数运行时,我想获取sc_usergroupname的值,这是sc_usergroups表的列。

总之,这是3N个数据表,想要获取记录,我可以轻松地连接多个表,但引用第三个表。如何获得它,

谢谢

您的问题不是很清楚,因为您尚未指定第三个表的名称和描述。 第二张桌子真的像你问题中所说的那样sc_usergroups,第三张桌子真的sc_usergroup吗? 这似乎有点奇怪,但基于此,我在下面进行了MySQL查询。 这个想法是,在 WHERE 子句中,您从表 1 中选择用户,然后将 1 连接到 2,然后连接 2 到 3,然后在语句的 SELECT 部分中请求 1 和 3 的值。

SELECT su.name, sug.name 
FROM sc_users su, sc_usergroups sugs, sc_usergroup sug 
WHERE 
  su.user_id = 1 AND 
  su.sc_usergroupid = sugs.usergroupsid AND 
  sugs.sug_usergroupid = sug.usergroupid