初期の問題:
MySQL では、 WHERE 句に含まれていない他のフィールドもクエリの GROUP BY 句に存在する場合、クエリの WHERE 句内のデータベース テーブルのフィールドのデータ。具体的には:
<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>
提案された解決策:
残念ながら、この制限を MySQL 内で直接克服することはできません。ただし、目的の結果を達成するための別の戦略もあります。
目的のフィールド データを取得するサブクエリを作成します。
<code class="sql">SELECT userID, userHabilitado FROM cursosUsuarios WHERE userID = 70</code>
次に、結合します。適切なフィールドを使用して、このサブクエリとメイン クエリを実行します:
<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>
ネストされたクエリを使用してクエリを再定式化します:
<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>
これらのソリューションではどちらも、GROUP BY 句に他のフィールドを含めながら、WHERE 句で特定のユーザーの userHabilitado フィールド データを表示できます。
以上がMySQL で GROUP BY を使用して WHERE 句のフィールドを表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。