使用MySQL

时间:2015-11-07 09:01:00

标签: mysql mysqli

我需要一个帮助。我需要使用MySQL加入多个表。我做了一些编码,如下所示。

select u.user_name
, u.user_id
, p.colg_name
, r.role
, d.dept_name 
from db_user u 
 JOIN db_profile p 
ON u.colg_id=p.profile_id 
 JOIN db_role r 
  ON u.role_id = r.role_id 
 JOIN db_department d 
  ON u.dept_id = d.dept_id 
WHERE u.user_type = 3
 AND u.role_id != 0
 AND u.colg_id != 0
 ORDER BY u.user_id DESC

我的问题是,如果db_user表的dept_id列值为0,则此查询无法正常工作。我的要求是在db_user表{{1}中}列值为dept_id它与0表格不匹配,如果db_department值不是dept_id则会获取所有其他数据,那么它将与0匹配表并获取所有数据。请帮助我。

1 个答案:

答案 0 :(得分:0)

使用左连接。即使在连接的表中没有相应的记录(dept_id = 0),这也将使您的查询工作。

select u.user_name
, u.user_id
, p.colg_name
, r.role
, IFNULL(d.dept_name,'no department') AS dept_name
from db_user u 
 JOIN db_profile p 
ON u.colg_id=p.profile_id 
 JOIN db_role r 
  ON u.role_id = r.role_id 
 LEFT JOIN db_department d 
  ON u.dept_id = d.dept_id 
WHERE u.user_type = 3
 AND u.role_id != 0
 AND u.colg_id != 0
 ORDER BY u.user_id DESC