2013-02-05 15 views
1

我試圖加入3個表,爲用戶保存值 - 他們的id和用戶名,以及具有關於用戶個人資料圖片的信息的表engine4_storage_files。如果用戶沒有上傳個人資料照片,sf表格中沒有記錄 - 但我想要查詢所有用戶,而不管照片是否上傳。當一個沒有價值時加入3個表

SELECT p.user_id as gledalac, sf.storage_path, 
     u.displayname, u.username 
FROM engine4_pregledi p JOIN 
    engine4_storage_files sf JOIN 
    engine4_users u 
WHERE p.subject_id = 1 
AND p.user_id = u.user_id 
AND sf.parent_id = u.user_id 
AND sf.parent_type = 'user' 
AND sf.type = 'thumb.icon' 
AND sf.parent_file_id = u.photo_id 
order by datum desc limit 10 

該查詢返回3個用戶路徑自己的形象,但實際上有4個用戶被顯示,但4用戶沒有個人資料圖片 - 所以他不包含在查詢結果。

有沒有辦法將第4位用戶沒有配置文件映像包含到查詢結果中?

+0

爲什麼不使用左加入? – Aditi

回答

3

使用LEFT JOIN代替,

SELECT p.user_id as gledalac, 
     sf.storage_path, 
     u.displayname, 
     u.username 
FROM engine4_pregledi p 
     LEFT JOIN engine4_users u 
      ON p.user_id = u.user_id 
     LEFT JOIN engine4_storage_files sf 
      ON sf.parent_id = u.user_id AND 
       sf.parent_type = 'user' AND 
       sf.type = 'thumb.icon' AND 
       sf.parent_file_id = u.photo_id 
WHERE p.subject_id = 1 
ORDER BY datum DESC 
LIMIT 10 

爲了充分獲得知識約加盟,請訪問以下鏈接:

+0

工程像魅力,謝謝。我肯定會檢查你的鏈接,所以我不需要在這裏問這些問題:) – jOpacic