LEFT JOIN. GROUP BY. this is incompatible with sql_mode=only_full_group_by

0 respostas
mysql
tiagocaus

Tenho um sistema que usava em 2013. Estou migrando para a versão mais recente do php/MySQL.

Como é um código complexo, na época foi um amigo que fez para mim, mas infelizmente ele não esta mais aqui.

Esse é o código:

$year = $_GET["ano"]; //2013
$query_rs = "SELECT
     $year AS Year,
     m.month AS Month,
     fr.SomaEntradaAtual AS Entry,
     fd.SomaSaidaAtual AS Output,
     IFNULL(fr.SomaEntradaAtual,0) - IFNULL(fd.SomaSaidaAtual,0) AS Balance
 FROM (
       SELECT 'Jan' AS MONTH
       UNION SELECT 'Feb' AS MONTH
       UNION SELECT 'Mar' AS MONTH
       UNION SELECT 'Apr' AS MONTH
       UNION SELECT 'May' AS MONTH
       UNION SELECT 'Jun' AS MONTH
       UNION SELECT 'Jul' AS MONTH
       UNION SELECT 'Aug' AS MONTH
       UNION SELECT 'Sep' AS MONTH
       UNION SELECT 'Oct' AS MONTH
       UNION SELECT 'Nov' AS MONTH
       UNION SELECT 'Dec' AS MONTH
      ) AS m
LEFT JOIN  (SELECT Month(DATA) AS rmonth, SUM(valor) AS SomaEntradaAtual,
    DATA FROM financ_receita WHERE YEAR(DATA) = $year
    GROUP BY MONTH(DATA)) AS fr
ON MONTH(STR_TO_DATE(CONCAT(m.month, ' $year'),'%M %Y')) = MONTH(fr.DATA)
LEFT JOIN  (SELECT Month(DATA) AS dmonth, SUM(valor) AS SomaSaidaAtual,
       DATA FROM financ_despesa WHERE YEAR(DATA) = $year
       GROUP BY MONTH(DATA)) AS fd
ON MONTH(STR_TO_DATE(CONCAT(m.month, ' $year'),'%M %Y')) = MONTH(fd.DATA)";

O erro que estou tendo é esse:

Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘sitepara_bd.financ_despesa.data’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

EXEMPLO DA ÉPOCA: http://sqlfiddle.com/#!9/28638/17

Li em alguns lugares dizendo para desativar o only_full_group_by, mas fazendo isso não retorna nenhum valor:

Screenshot_15

Peço a ajuda de vocês.

Criado 19 de junho de 2019
Respostas 0
Participantes 1