Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

603
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!