当一个表没有值时,加入3个表

时间:2013-02-05 08:38:40

标签: sql select join

我正在尝试加入3个包含用户值的表 - 他们的ID和用户名,以及包含用户个人资料图片信息的表engine4_storage_files。如果用户没有上传它的个人资料图片,sf表中没有记录 - 但我想查询所有用户,无论天气是否上传图片。

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位没有个人资料图片的用户包含在查询结果中?

1 个答案:

答案 0 :(得分: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

要充分了解联接知识,请访问以下链接: