Maison > base de données > tutoriel mysql > Pourquoi mon MySQL LEFT JOIN ne renvoie-t-il qu'une seule ligne au lieu de toutes les lignes de la table primaire ?

Pourquoi mon MySQL LEFT JOIN ne renvoie-t-il qu'une seule ligne au lieu de toutes les lignes de la table primaire ?

Susan Sarandon
Libérer: 2024-12-28 06:01:13
original
362 Les gens l'ont consulté

Why Does My MySQL LEFT JOIN Only Return One Row Instead of All Rows from the Primary Table?

La jointure gauche ne renvoie pas toutes les lignes

Question originale :

Une requête MySQL impliquant un La jointure externe gauche renvoie une seule ligne au lieu de toutes les lignes de la table principale. La condition de jointure inclut un filtre sur un champ de la table secondaire. Comment sélectionner toutes les lignes de la table principale, y compris la valeur de la table secondaire où le champ répond aux critères de filtre ?

Solution :

Le problème vient de placer la condition WHERE après le JOIN. En le déplaçant vers la clause JOIN elle-même, la requête garantit que la jointure correspond uniquement aux lignes qui répondent aux critères de filtre. Voici la requête modifiée :

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
Copier après la connexion

Dans cette requête, la condition WHERE n'est plus dans la clause WHERE séparée après le JOIN. Au lieu de cela, il a été incorporé dans la clause ON de JOIN, garantissant que seules les lignes où pr7.field vaut 23 sont jointes. Cela permet de sélectionner toutes les lignes de jos_hp_properties, y compris celles qui n'ont pas de correspondance dans jos_hp_properties2, qui auront une valeur NULL pour pr7.value.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal