Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Selecionando todos os itens em uma tabela e juntando com outra tabela, permitindo nulos


você deve usar left join em vez de right join

As diferentes junções


inner join :mantém apenas as linhas onde há dados em ambas as tabelas

left join :mantenha todas as linhas da tabela da esquerda e adicione o que for possível da direita

right join :mantenha todas as linhas da tabela da direita e adicione o que for possível da esquerda

A mesa da esquerda é sempre a mesa que já temos e a mesa da direita é aquela com a qual estamos juntando.

Para o registro, há também uma cross join que une cada linha da tabela da esquerda com cada linha da tabela da direita, mas esta não é usada com muita frequência.

Espero que agora tudo isso esteja mais claro para você :)

Consulta corrigida

select  bird_name, member_id 
from birds  
left join bird_likes on birds.bird_id = bird_likes.bird_id 
where member_id = 2;

Esteja ciente de que isso pressupõe que a coluna member_id está na tabela de pássaros, caso contrário você pode manter a condição assim:
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;