Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

614
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda