Maison >base de données >tutoriel mysql >Pourquoi ma jointure SQL gauche ne renvoie-t-elle qu'une seule ligne au lieu de toutes les lignes ?

Pourquoi ma jointure SQL gauche ne renvoie-t-elle qu'une seule ligne au lieu de toutes les lignes ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-12 13:25:14220parcourir

Why Does My SQL Left Join Only Return One Row Instead of All Rows?

La requête SQL ne renvoie pas toutes les lignes avec la jointure gauche

Cette requête vise à récupérer toutes les lignes de la table jos_hp_properties (abrégée en pr) ainsi avec la valeur de la table jos_hp_properties2 (abrégée en pr7), où le champ nommé field est égal à 23 dans ce dernier tableau. Cependant, la requête actuelle ne renvoie qu'une seule ligne, bien que la table jos_hp_properties contienne 27 lignes.

Pour résoudre ce problème, la clause WHERE doit être déplacée vers l'instruction JOIN, comme suit :

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

Avec cette requête modifiée, la clause WHERE ne restreint plus l'ensemble de résultats avant la jointure. Au lieu de cela, les lignes de la table jos_hp_properties seront incluses même s'il n'y a aucune ligne correspondante dans la table jos_hp_properties2 pour le champ 23 (auquel cas la valeur renvoyée sera NULL). Cela garantit que toutes les lignes de la première table sont renvoyées, ainsi que les données souhaitées de la deuxième table, le cas échéant.

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