web-dev-qa-db-ja.com

MySQLの2つのテーブルを結合する方法(テーブルの1つに異なる値を含む)

私は2つのテーブルを持っています(以下の画像に示すように)inbox_messages_tableとusers_table enter image description here

だから私がやろうとしているのはuser_idの2つのテーブルを結合することですが、私のinbox_messages_tableには、Webサイト自体のために作成したIDがあり、(-1)一意であるため、どのようにしてこれを取得して取得できますか他の人との-1も?

これまでの私の質問はこれです:

// $user_id is the logged in user

SELECT * FROM inbox_messages_table i 
    JOIN users_table u ON i.from_user_id = u.user_id 
    WHERE u.banned = 0 
        AND to_user_id = $user_id 
        AND deleted = 0 ORDER BY message_timestamp DESC
2
firashelou

JOINの代わりにLEFT JOINを使用できます。

LEFT JOINを使用すると、結合テーブルに一致するレコードがない場合でも、クエリは左側のテーブル、つまりFROMのレコードからすべてのレコードを返します。

SELECT * FROM inbox_messages_table i 
LEFT JOIN users_table u ON i.from_user_id = u.user_id 
WHERE u.banned = 0 AND to_user_id = $user_id AND deleted = 0 ORDER BY message_timestamp DESC
4
FloT