加入两个表,其中一个表与许多表有关系

时间:2018-01-22 14:43:17

标签: mysql sql codeigniter relational-database

我有5个表,结构在下面 -

user - id
     - name
     - dob
     - phone

desi - id
     - desgname
     - dept_id

dept - id
     - deptname
     - org_id

org  - id
     - orgname

junction_table    - id
                  - userid
                  - desg_id
                  - dept_id
                  - org_id

我怎样才能制作联合表?

更新

经过一段时间的尝试后,我得到了一个解决方案,并将其作为答案发布了

3 个答案:

答案 0 :(得分:1)

试试这个

    $this->db->select('your-selection');
    $this->db->from('user');
    $this->db->join('designation','user.designation_id=designation.designation_id');
    $this->db->join('department','user.department_id=department.department_id');
    $this->db->join('org','user.org_id=org.org_id');
    $this->db->join('designation','user.designation_id=designation.designation_id');
    $this->db->where('your-condition`);
    $result_set = $this->db->get();
    return $result_set->result();

your-selection可以是您要选择的字段。

your-condition可以是数组中的条件。

答案 1 :(得分:1)

如果我理解得很好,我认为你需要这样的东西,加入每一张桌子以获得你需要的信息。

SELECT
    U.name
    ,D.desgname
    ,DPT.deptname
    ,O.orgname
FROM junction_table JT
INNER JOIN [user] U
    ON JT.userid = U.id
INNER JOIN [desi] D
    ON JT.desg_id = D.id
INNER JOIN [dept] DPT
    ON JT.dept_id = DPT.id
INNER JOIN org O
    ON JT.org_id = O.id

答案 2 :(得分:0)

解决方案是将连接表连接到用户表,然后再次将连接表连接到其他表

SELECT
U.name,
O.orgname,
DPT.dpt,
D.desgname
FROM user U
LEFT JOIN junction_table JT
    ON U.id = JT.user_id
LEFT JOIN organization O
    ON JT.org_id = O.id
LEFT JOIN tbl_suborg DPT
    ON JT.dpt_id = DPT.id
LEFT JOIN designation D
    ON JT.desg_id = D.id

感谢兄弟试图帮助我。