我有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
我怎样才能制作联合表?
经过一段时间的尝试后,我得到了一个解决方案,并将其作为答案发布了
答案 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
感谢兄弟试图帮助我。