mysql连接第3个表,其中FK没有直接链接

时间:2015-06-21 05:42:28

标签: php mysql codeigniter join

我有3张桌子,

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

现在我想通过加入第3张表来获取第1张表的数据,但是第1张表和第3张表没有直接链接,

下面是我的codeigniter模型,

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将FK命名为sc_usergroupid,这是名为sc_usergroups的表的PK,

当上面的模型函数运行时,我想得到sc_usergroupname的值,它是sc_usergroups表的列。

简而言之,这是3N数据表,想要获取记录, 我可以很容易地加入多个表连接,但参考第3表。 怎么做到,

谢谢,

1 个答案:

答案 0 :(得分:0)

您的问题不是很清楚,因为您没有指定第三个表的名称和描述。第二个表真的是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