Maison > base de données > tutoriel mysql > Pourquoi le mélange de JOIN et de virgules dans les requêtes MySQL provoque-t-il des erreurs « Colonne inconnue » ?

Pourquoi le mélange de JOIN et de virgules dans les requêtes MySQL provoque-t-il des erreurs « Colonne inconnue » ?

Barbara Streisand
Libérer: 2025-01-09 10:46:49
original
420 Les gens l'ont consulté

Why Does Mixing JOINs and Commas in MySQL Queries Cause

Le mélange de JOIN et de virgules dans les requêtes MySQL provoque des erreurs

Description du problème

Lors de l'exécution de la requête MySQL suivante :

<code class="language-sql">SELECT m.*, t.*
FROM memebers as m, telephone as t
INNER JOIN memeberFunctions as mf ON m.id = mf.memeber
INNER JOIN mitgliedTelephone as mt ON m.id = mt.memeber
WHERE mf.function = 32</code>
Copier après la connexion

rencontrera l'erreur suivante :

<code>#1054 - Unknown column 'm.id' in 'on clause'</code>
Copier après la connexion

La requête échoue même si la colonne existe. Cette erreur se produit lorsque la syntaxe ANSI 1992 JOIN et les virgules sont utilisées ensemble dans une requête.

Solution

Selon la documentation MySQL, il faut éviter de mélanger des JOIN et des virgules. Pour résoudre ce problème, remplacez la virgule par l'opérateur JOIN approprié (CROSS, INNER, LEFT).

La requête mise à jour utilisant INNER JOIN est la suivante :

<code class="language-sql">SELECT m.*, t.*
FROM memebers as m
INNER JOIN telephone as t ON <join condition>
INNER JOIN memeberFunctions as mf ON m.id = mf.memeber AND mf.function = 32
INNER JOIN mitgliedTelephone as mt ON m.id = mt.memeber</code>
Copier après la connexion

Notez que la condition de jointure entre m et t doit être spécifiée pour éviter le produit cartésien.

Notes supplémentaires

Pour plus de clarté et d'efficacité, l'opérateur JOIN doit être utilisé à la place des virgules. La virgule indique un CROSS JOIN, ce qui peut provoquer un comportement inattendu, notamment lors de la combinaison de plusieurs tables. En utilisant des opérateurs JOIN explicites, vous pouvez définir des relations spécifiques entre les tables pour vous assurer d'obtenir les résultats souhaités.

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