2015-11-07 82 views
1

我需要一个帮助。我需要使用MySQL连接多个表格。我已经完成了下面给出的一些编码。使用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这查询不working.Here我的要求是,如果在db_userdept_id列值0它不会与db_department匹配表,并获取所有其他数据如果dept_id值不是0那么它将与db_department表匹配并获取所有数据。请帮助我。

+0

这跟这里的php的用法无关,它只是一个sql的问题。我建议你从你的问题中删除'php'标记。谢谢! – arkascha

回答

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