私はテーブルusers
とlocations
とジョインテーブルを持っています。ジョイン・テーブルには、その場所の各個人のランク値もあります。これらの個人は、特定の場所で他の場所より高いランクを持つためです。Joinテーブルに存在しない値を表示するには、どのようなJoin?
users
=========
id | name
=========
1 | john
2 | bob
3 | alex
locations
===============
id | name
===============
1 | san diego
2 | dallas
3 | new york
4 | denver
join_users_locations
==============================
user_id | location_id | rank
==============================
2 | 1 | 4
2 | 2 | 3
2 | 4 | 2
3 | 1 | 2
3 | 2 | 4
参加表には、その場所にランクがあるユーザーだけがリストされています。彼らのランクがゼロ/ヌルであれば、テーブルにいなくてもよい。
私はこのようなクエリ結果を取得したいよ:ちょうど与える(
name | location | rank
=======================
bob | san diego | 4
bob | dallas | 3
bob | new york | 0
bob | denver | 2
あなたが見ることができるように、私はすべての場所がリストになりたい、ユーザーがで接合されていないものも含めをそれらのフィールドはゼロのランク値)。
それは場所のリストを取得するのは簡単ですし、彼/彼女はと接合された場所のためのランク:
SELECT
u.name,
FROM users u
LEFT JOIN join_users_locations jul ON jul.user_id = u.id
LEFT JOIN locations l ON l.id = jul.location_id
WHERE u.id = 2
しかし、唯一のリストはどのような場所ユーザーがと接合されています。私は参加していない場所も見たいと思う。
これは可能ですが、解決策がわかりません。私はいくつかの異なるタイプのJOINをさまざまな結果で試しました。
あなたは参加外側左しようとしましたか? – Ciprian