Maison >base de données >tutoriel mysql >Pourquoi ma jointure gauche ne renvoie-t-elle pas toutes les lignes de la table de gauche ?
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!