Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 49
  1. #1

    [MYSQL] Valore conta massimo di un campo su valori raggruppati

    Salve ho questo dbfiddle : https://www.db-fiddle.com/f/5KHAmkAXTg6rsk5oJDnFH2/0

    Come posso filtrare in modo che con lo stesso codice venga presa solamente la riga con numero_conta maggiore ?

  2. #2

  3. #3
    La prima dovrebbe essere ok , la seconda invece rispetto alla prima restituisce quantità totali diverse (e sbagliate)

  4. #4

  5. #5
    Grazie mille è un paio di ore che ci sbatto la testa , potresti anche spiegarmi logicamente cosa hai fatto almeno magari capisco meglio e potrebbe essermi utile per una volta successiva

  6. #6
    ho messo in join la tua query con un'altra che estrae la conta più alta per le combinazioni magazzino/articolo; in pratica la seconda fa da filtro per la prima

  7. #7
    Quote Originariamente inviata da optime Visualizza il messaggio
    ho messo in join la tua query con un'altra che estrae la conta più alta per le combinazioni magazzino/articolo; in pratica la seconda fa da filtro per la prima
    E max (id) come mai lo hai inserito ?

  8. #8
    perché così NON entra nella GROUP BY

  9. #9
    Quote Originariamente inviata da optime Visualizza il messaggio
    perché così NON entra nella GROUP BY
    Ultima domanda e se voglio prendere tutti i valori della tabella sap .codice_materiale e sap.descrizione (legati a conta.codice_materiale) e mostrare tutto , lasciando vuote le righe dove non c'è corrispondenza (lato conta ) con la stessa query di ieri ?

    HO provato così :

    codice:
    
    SELECT `conta_mat`.`magazzino`, `conta_mat`.`codice_materiale`, `conta_mat`.`numero_conta`, `conta_mat`.`unita_misura` ,sap_ricevuti.codice_materiale as codice_sap, `sap_ricevuti`.`valore_totale_sap`, `sap_ricevuti`.`valore_singolo_sap`, `sap_ricevuti`.`quantita_sap`
    from sap_dati_ricevuti sap_ricevuti 
    join `conta_materiale` `conta_mat`  ON `conta_mat`.`codice_materiale` = `sap_ricevuti`.`codice_materiale`
    JOIN(
    SELECT `conta`.`magazzino`, `conta`.`codice_materiale`, `conta`.`numero_conta`, `conta`.`unita_misura`, sum(conta.quantita) as quantita_totale, `sap`.`valore_totale_sap`, `sap`.`valore_singolo_sap`, `sap`.`quantita_sap`
    FROM `conta_materiale` `conta`
    JOIN (SELECT max(id) id, max(numero_conta) FROM conta_materiale GROUP BY magazzino, codice_materiale) conta_appoggio ON `conta`.`id`=`conta_appoggio`.`id`
    JOIN `sap_dati_ricevuti` `sap` ON `conta`.`codice_materiale` = `sap`.`codice_materiale`
    WHERE `conta`.`id_inventario` = '4'
    GROUP BY `conta`.`codice_materiale`, `conta`.`magazzino`, `conta`.`numero_conta`, `conta`.`unita_misura`
    ) valori_conta on sap_ricevuti.codice_materiale=valori_conta.codice_materiale
    Ma ho :
    Query Error:Error: ER_WRONG_FIELD_WITH_GROUP: Expression #6 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.sap.valore_totale_sap' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
    Ultima modifica di pippuccio76; 18-11-2022 a 09:49

  10. #10
    fa' una LEFT JOIN solo sull'ultima query. TIP: abbreviare sap_dati_ricevuti con sap_ricevuti a cosa serve? Piuttosto usa s, visto che non hai altre tabelle che iniziano con "s"

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.