sql >> Base de Datos >  >> RDS >> Mysql

Seleccionar todos los elementos en una tabla y unirlos con otra tabla, permitiendo valores nulos

debes usar left join en lugar de right join

Las diferentes uniones

inner join :mantenga solo las filas donde hay datos en ambas tablas

left join :mantenga todas las filas de la tabla de la izquierda y agregue lo que sea posible de la derecha

right join :mantenga todas las filas de la tabla de la derecha y agregue lo que sea posible de la izquierda

La tabla de la izquierda es siempre la tabla que ya tenemos y la tabla de la derecha es con la que nos estamos uniendo.

Para que conste, también hay una cross join que une cada fila de la tabla de la izquierda con cada fila de la tabla de la derecha, pero esta no se usa muy a menudo.

Espero que todo esto ahora sea más claro para ti :)

Consulta corregida

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

Tenga en cuenta que esto supone que la columna member_id está en la tabla de pájaros, de lo contrario, puede mantener la condición de esta manera:

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;