devi usare left join
invece di right join
I diversi join
inner join
:conserva solo le righe in cui sono presenti dati in entrambe le tabelle
left join
:mantieni tutte le righe della tabella di sinistra e aggiungi ciò che è possibile da quella di destra
right join
:mantieni tutte le righe della tabella di destra e aggiungi ciò che è possibile da quella di sinistra
Il tavolo di sinistra è sempre il tavolo che abbiamo già e il tavolo di destra è quello a cui ci stiamo unendo.
Per la cronaca, c'è anche un cross join
che unisce ogni riga della tabella di sinistra con ogni riga della tabella di destra, ma questa non viene utilizzata molto spesso.
Spero che ora tutto questo ti sia più chiaro :)
Richiesta corretta
select bird_name, member_id
from birds
left join bird_likes on birds.bird_id = bird_likes.bird_id
where member_id = 2;
Tieni presente che questo presuppone che la colonna member_id
è nella tabella degli uccelli, altrimenti puoi mantenere la condizione in questo modo:
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;