Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sélection de tous les éléments d'une table et jointure avec une autre table, autorisant les valeurs nulles

vous devez utiliser left join au lieu de right join

Les différentes jointures

inner join  :conserver uniquement les lignes contenant des données dans les deux tables

left join :conserve toutes les lignes du tableau de gauche et ajoute ce qui est possible de celui de droite

right join :gardez toutes les lignes du tableau de droite et ajoutez ce qui est possible de celui de gauche

La table de gauche est toujours la table que nous avons déjà et la table de droite est celle avec laquelle nous nous joignons.

Pour mémoire, il y a aussi une cross join qui joint chaque ligne du tableau de gauche avec chaque ligne du tableau de droite, mais celui-ci n'est pas utilisé très souvent.

J'espère que tout cela est maintenant plus clair pour vous :)

Requête corrigée

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

Sachez que cela suppose que la colonne member_id est dans la table des oiseaux, sinon vous pouvez garder la condition comme ceci :

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;