Mysql
 sql >> Database >  >> RDS >> Mysql

Selezionando tutti gli elementi in una tabella e unisciti a un'altra tabella, consentendo valori nulli

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;