Maison >base de données >tutoriel mysql >Pourquoi ma jointure gauche ne renvoie-t-elle pas toutes les lignes de la table de gauche ?

Pourquoi ma jointure gauche ne renvoie-t-elle pas toutes les lignes de la table de gauche ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-28 15:01:141002parcourir

Why Doesn't My Left Join Return All Rows From the Left Table?

La jointure gauche ne renvoie pas toutes les lignes : résoudre le problème

Comme indiqué dans un fil de discussion précédent, l'absence de toutes les lignes dans une jointure gauche la requête peut provenir d’une clause WHERE mal placée. Dans ce cas, une requête vise à extraire les données de la table 'jos_hp_properties' et éventuellement à sélectionner une valeur nommée 'room_price_high' dans la table 'jos_hp_properties2' en fonction de la colonne de champ étant égale à 23.

Pour résoudre ce problème et assurer le retour de toutes les lignes de la première table, la condition WHERE doit être déplacée de sa position d'origine après le LEFT OUTER JOIN dans la clause JOIN elle-même. La requête modifiée devrait ressembler à ceci :

SELECT pr.*, pr7.value AS `room_price_high`
  FROM `jos_hp_properties` pr
       LEFT JOIN `jos_hp_properties2` pr7 
       ON pr7.property=pr.id
   AND 
       pr7.field=23

En incorporant la condition WHERE dans le JOIN, la requête devient plus explicite et demande à la base de données de récupérer uniquement les lignes de la deuxième table où la colonne du champ est égale à 23. . Cela garantit que toutes les lignes de la première table sont renvoyées, qu'une valeur correspondante existe ou non dans la deuxième table. Par conséquent, les valeurs NULL correspondantes seront renvoyées pour les lignes de la première table qui n'ont pas de ligne correspondante dans la deuxième table en fonction du critère field=23.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn