1

我正在尝试加入 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 回答 1

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

要全面了解联接,请访问以下链接:

于 2013-02-05T08:40:27.883 回答