2015-11-07 81 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