вы должны использовать left join
вместо right join
Разные соединения
inner join
: хранить только те строки, в которых есть данные в обеих таблицах
left join
: сохранить все строки левой таблицы и добавить то, что возможно из правой
right join
: сохранить все строки в правой таблице и добавить то, что возможно, из левой
Левая таблица - это всегда та таблица, которую мы уже имеем, а правая - та, к которой мы присоединяемся.
Для записи существует также cross join
, который соединяет каждую строку в левой таблице с каждой строкой в правой таблице, но эта строка используется не очень часто.
Надеюсь, все это теперь вам понятнее:)
Исправленный запрос
select bird_name, member_id
from birds
left join bird_likes on birds.bird_id = bird_likes.bird_id
where member_id = 2;
Имейте в виду, что это предполагает, что столбец member_id
находится в таблице птицы, в противном случае вы можете сохранить условие следующим образом:
select bird_name, member_id
from birds
left join bird_likes on
birds.bird_id = bird_likes.bird_id and
bird_likes.member_id = 2;