es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema de consulta MySql. Inesperado ordenamiento de cláusulas. (cerca de “having” en la posición 117)

Tengo que convertir todas mis consultas de SQL a MySql para mi proyecto universitario, pero me encontré con un problema con la siguiente consulta:

select a.actor_name, count(fa.actor_id) as Películas
from Actor a
    join Film_Actor fa on a.actor_id = fa.actor_id
having count(fa.actor_id) = (select distinct max(count(actor_id)) from Film_Actor group by actor_id)
group by a.actor_name;

Dice lo siguiente:

Orden inesperado de las cláusulas. (cerca de “having” en la posición 117)

Estoy seguro de que tengo un problema de sintaxis en el código MySql (solo nos enseñaron SQL, no MySql).

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para resolver el error de sintaxis en el código de MySql, la consulta debe ser reordenada para seguir las reglas de sintaxis de MySql. Específicamente, la cláusula HAVING debe ir después de la cláusula GROUP BY. La consulta corregida debe ser la siguiente:

    SELECT a.actor_name, COUNT(fa.actor_id) AS Movies
    FROM Actor a
    JOIN Film_Actor fa ON a.actor_id = fa.actor_id
    GROUP BY a.actor_name
    HAVING COUNT(fa.actor_id) = (SELECT DISTINCT MAX(COUNT(actor_id)) FROM Film_Actor GROUP BY actor_id);
    

    Al mover la cláusula HAVING después de la cláusula GROUP BY, el error de sintaxis debería resolverse y la consulta debería funcionar correctamente en MySql.

Comments are closed.