0

私は2つのテーブルを持っています。ユーザーとテーブル 2。table2 では、次のようなエントリを持つことができます

id = 1
right_user_id = 1
left_user_id = 2

user テーブルには、ID 2 のユーザーが存在しない可能性があります。つまり、次の SQL ステートメントは ID 1 の table2-entry を返しません。

//php
$sql = 'SELECT t2.*, u.username AS u_name
        FROM users u, table2 t2
        WHERE t2.right_user_id = '.$user_id.'
              AND t2.left_user_id = u.user_id
        ORDER BY t2.time DESC';

しかし、とにかく id = 1 のエントリの t2.* 情報を取得したいと思います。u_name は「(不明)」と表示されます。

どのような種類の JOIN が必要で、どうすればその JOIN を実行できますか?

4

1 に答える 1

4
SELECT t2.*, case 
               when u.username is null 
               then 'Unknown' 
               else u.username 
             end AS u_name      
FROM table2 t2
left outer join users u on t2.left_user_id = u.user_id 
where t2.right_user_id = '.$user_id.'     
ORDER BY t2.time DESC; 
于 2012-05-27T20:41:57.380 に答える