1

engine4_storage_filesユーザーのIDとユーザー名の値を保持する3つのテーブルと、ユーザーのプロフィール写真に関する情報を含むテーブルを結合しようとしています。ユーザーがプロフィール写真をアップロードしていない場合、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番目のユーザーをクエリ結果に含める方法はありますか?

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 に答える