Problème initial :
Dans MySQL, vous ne parvenez pas à afficher un les données du champ de la table de base de données dans la clause WHERE d'une requête lorsque d'autres champs non inclus dans la clause WHERE sont également présents dans la clause GROUP BY de la requête. Plus précisément :
<code class="sql">SELECT cursos.cursoID AS idcurso, cursos.estadoCurso, cursosUsuarios.userHabilitado AS 'ok', GROUP_CONCAT(cursosUsuarios.userID SEPARATOR ',') AS 'usuarios' FROM cursos LEFT JOIN cursosUsuarios ON cursos.cursoID = cursosUsuarios.cursoID LEFT JOIN usuarios ON cursosUsuarios.userID = usuarios.userID WHERE cursos.estadoCurso='abierto' GROUP BY cursos.cursoID;</code>
Solution proposée :
Malheureusement, cette limitation ne peut pas être surmontée directement dans MySQL. Il existe cependant des stratégies alternatives pour obtenir le résultat souhaité :
Créez une sous-requête pour récupérer les données du champ souhaité :
<code class="sql">SELECT userID, userHabilitado FROM cursosUsuarios WHERE userID = 70</code>
Ensuite, rejoignez cette sous-requête avec la requête principale en utilisant le(s) champ(s) approprié(s) :
<code class="sql">SELECT cursos.cursoID AS idcurso, cursos.estadoCurso, (SELECT userHabilitado FROM cursosUsuarios WHERE userID = 70) AS 'userHabilitado', GROUP_CONCAT(cursosUsuarios.userID SEPARATOR ',') AS 'usuarios' FROM cursos LEFT JOIN cursosUsuarios ON cursos.cursoID = cursosUsuarios.cursoID LEFT JOIN usuarios ON cursosUsuarios.userID = usuarios.userID WHERE cursos.estadoCurso='abierto' GROUP BY cursos.cursoID;</code>
Reformuler la requête à l'aide d'une requête imbriquée :
<code class="sql">SELECT idcurso, estadoCurso, 'userHabilitado' FROM ( SELECT cursoID AS idcurso, estadoCurso, userHabilitado FROM cursos LEFT JOIN cursosUsuarios ON cursos.cursoID = cursosUsuarios.cursoID WHERE cursos.estadoCurso='abierto' GROUP BY cursoID ) AS subquery WHERE userHabilitado = 1;</code>
Ces deux solutions vous permettent d'afficher les données du champ userHabilitado pour des utilisateurs spécifiques dans la clause WHERE tout en incluant d'autres champs dans la clause GROUP BY.
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!