Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [MySQL] Eseguire SUM con only_full_group_by

    ciao!

    su un db ho questa impostazione attivata, only_full_group_by, e a quanto pare non posso disattivarla.

    io sto cercando di eseguire questa query, ma non ne vengo fuori:
    codice:
    SELECT (SELECT SUM(or_prezzo_vnd * or_qta) FROM ordini_r WHERE or_testata_fk = ot_id) AS sum_mese,
            UPPER(MONTHNAME(ot_data_aggiunta)) AS mese
    FROM ordini_t
    GROUP BY mese
    io ho capito dove mi da errore, ma non so come risolvere.
    perchè cmq nn ha senso che metto la SUM nella GROUP BY.

    qualche suggerimento??

  2. #2
    perché fai select di select? prova con una sola

  3. #3
    ok, posso anche provare ad migliorare la select.
    ma il problema della GROUP BY cmq rimane .

    per ora avrei risolto direttamente da php:
    codice:
    $this->pdo->exec("SET SESSION sql_mode=''");

  4. #4

  5. #5
    Quote Originariamente inviata da optime Visualizza il messaggio
    questa la query, che da lo stesso risultato:
    codice:
            SELECT SUM(or_prezzo_vnd * or_qta) AS sum_mese,
                UPPER(MONTHNAME(or_data_aggiunta)) AS mese
            FROM ordini_r 
            WHERE YEAR(or_data_aggiunta) = ?
            GROUP BY mese
            ORDER BY MONTH(or_data_aggiunta)
    il senso è che senza quella riga di php mi da lo stesso errore.
    sicuramente la query è meglio, ma il problema di base cmq rimane.

  6. #6
    posti anche l'errore per cortesia?

  7. #7
    ok scusa, avevo dato per scontato che l'errore si capisse dal primo post!

    eccolo:
    codice:
    #1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'Sql1734907_4.ordini_r.or_data_aggiunta' 
    which is not functionally dependent on columns in GROUP BY clause; 
    this is incompatible with sql_mode=only_full_group_by
    da PHP, infatti, ho cambiato la sql_mode in fase di connessione, e funziona.
    solo che come soluzione non mi piace un granchè.
    e non ho accesso alle impostazioni del db ovviamente.

  8. #8
    prova a usare sempre la stessa sintassi per il mese
    codice:
    SELECT
      SUM(or_prezzo_vnd * or_qta) AS sum_mese,
      UPPER(MONTHNAME(or_data_aggiunta)) AS mese
    FROM 
      ordini
    WHERE 
      YEAR(or_data_aggiunta) = ?
    GROUP BY 
      UPPER(MONTHNAME(or_data_aggiunta))
    ORDER BY 
      UPPER(MONTHNAME(or_data_aggiunta))

  9. #9
    tip: io userei sempre solo MONTH(or_data_aggiunta), il nome del mese lo metteri poi in visualizzazione

  10. #10
    eh si ho già provato così, ma non cambia nulla.
    nel senso che se poi levo la riga di PHP mi ridà errore!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.