Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

611
Vistas
Error de sintaxis o infracción de acceso: 1055 La expresión n.º 1 de la lista SELECT no está en la cláusula GROUP BY y contiene una columna no agregada

La aplicación está alojada en Bluehost en un hosting compartido. Intenté ejecutar la siguiente consulta en phpMyAdmin y los resultados funcionan bien:

 SELECT employee_id , floor(Datediff(max(to_date), min(from_date))/365) As diif FROM `work_experiences` group by employee_id having floor(Datediff(max(to_date), min(from_date))/365) >=15

A continuación se muestra mi generador de consultas de Laravel:

 $query->groupBy('employee_id'); $query->havingRaw('Floor(Datediff(Max(to_date), min(from_date))/365) >='.$filterOverralExperienceA); $query->havingRaw('Floor(Datediff(Max(to_date), min(from_date))/365) <='. $filterOverralExperienceB);

El código anterior me da el error de golpe:

Error de sintaxis o infracción de acceso: 1055 La expresión n.º 1 de la lista SELECT no está en la cláusula GROUP BY y contiene la columna no agregada 'affixpro_jobhut.work_experiences.id' que no depende funcionalmente de las columnas de la cláusula GROUP BY; esto es incompatible con sql_mode=only_full_group_by (SQL: seleccione count (*) como agregado de users donde is_active = 1 y existe (seleccione * from user_types where users . id = user_types . user_id y is_type_active = 1 and is_active = 1) y existe ( seleccione * de employees donde users . id = employees . is_edited_first_time user_id 1 y existe (seleccione * de work_experiences donde employees . id = experiencias_laborales . grupo de work_experiences por employee_id con Floor( employee_id (Max(to_date), min(from_date)))/ 365) >=10 y Floor(Datediff(Max(to_date), min(from_date))/365) <=100)))

Agrupar por ID funciona bien, pero no employee_id.

Ya intenté cambiar la configuración de la base de datos estricta a falsa, pero aún así continúa.

Agradezco su ayuda y asistencia en esto.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En SQL, cuando una consulta contiene una cláusula GROUP BY, todas las columnas devueltas por la consulta (en la parte SELECT) deben incluirse en la propia cláusula GROUP BY o agregarse para que MySQL sepa qué valor debe devolver.

Entonces, el motivo del mensaje de error es que la consulta generada por Eloquent contiene (select * from work_experiences .

Ahora, para arreglarlo en tu caso, supongo que solo tienes que agregar $query->select('employee_id'); justo antes de la cláusula GROUP BY para que la nueva consulta incluya (select employee_id from work_experiences .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda