musisz użyć left join
zamiast right join
Różne połączenia
inner join
:zachowaj tylko te wiersze, w których znajdują się dane w obu tabelach
left join
:zachowaj wszystkie wiersze z lewej tabeli i dodaj to, co jest możliwe z prawej
right join
:zachowaj wszystkie wiersze prawej tabeli i dodaj to, co jest możliwe z lewej
Lewy stół to zawsze ten, który już mamy, a prawy to ten, z którym się łączymy.
Dla przypomnienia istnieje również cross join
który łączy każdy wiersz w lewej tabeli z każdym wierszem w prawej tabeli, ale ten nie jest często używany.
Mam nadzieję, że teraz wszystko jest dla Ciebie jaśniejsze :)
Poprawione zapytanie
select bird_name, member_id
from birds
left join bird_likes on birds.bird_id = bird_likes.bird_id
where member_id = 2;
Należy pamiętać, że zakłada się, że kolumna member_id
jest w tabeli ptaków, w przeciwnym razie możesz zachować ten warunek:
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;