テーブル:
users: id INT
items: id INT
setid INT
sets: id INT
relationships: userid INT
itemid INT
relationship ENUM('owner', 'participant')
auseridと asetidを指定すると、セット内のすべてのアイテムのリストと、関係が存在する場合は各アイテムに対するユーザーの関係を生成する必要があります。つまり、結果は
setid itemid relationship
---------------------------------
1 1 NULL
1 2 owner
....
次の句は、2 番目の句が nullのwhere行を除外するため、機能しません。relationship
select
sets.id as setid,
items.id as itemid,
relatonships.relationship as relationship
from sets
inner join items on sets.id = items.setid
left join relationships on relationships.itemid = items.id
where
sets.id = 5
and relationships.userid = 27
ただし、2 番目のwhere句は、その項目と特定のユーザーの間に既存の関係がない行を除外します。単一のクエリでこれを行うにはどうすればよいですか?