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

Tengo la obligación de seleccionar todos los valores de las aves de table (básicamente todas las aves), y luego unirme a otra tabla que rastrea a quién le gusta ese pájaro.

Así que quiero que la consulta devuelva todas las aves e identificaciones de loggings donde a las personas les gusta ese pájaro. Y si no hay logging de que a alguien le guste esta ave, entonces ese campo debería ser nulo.

Mi consulta actual no obtiene los nulos. Aquí está:

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

¿Qué podría hacer para asegurarme de que cada fila en la table de pájaros se muestra una vez?

Gracias, Alex

debe usar la left join vez de la 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 izquierda y agregue lo que es posible desde la derecha

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

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

Para el logging, también hay una cross join que une cada fila en la tabla de la izquierda con cada fila en la tabla de la derecha, pero esta no se usa con mucha frecuencia.

Espero que todo esto ahora esté 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 count que esto supone que la columna member_id está en la tabla de aves, 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; 
 SELECT bird_name, member_id FROM birds LEFT JOIN bird_likes ON birds.bird_id=bird_likes.bird_id AND member_id=2 

Desea utilizar left outer join en este caso

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

Esto devolverá todos los nombres de pájaro y 'nulo' para los que tengan "me gusta" vacíos.

Cambie su DERECHA ÚNASE a una UNIÓN IZQUIERDA, que traerá todos los loggings de las birds , tengan o no relación con bird_likes