Salve ho questo Dbfiddle :
https://www.db-fiddle.com/f/8SoDX85zYKjrQMKUhdmrJ3/1
Come posso raggruppare i dati correttamente ?
Salve ho questo Dbfiddle :
https://www.db-fiddle.com/f/8SoDX85zYKjrQMKUhdmrJ3/1
Come posso raggruppare i dati correttamente ?
- Ho modificato la query cosi :
Ma se aggiungo nella select tipo_prodotto_finito.nome ho di nuovo il problema :codice:select conta_materiale.id,conta_materiale.id_inventario,conta_materiale.numero_conta,inventario.nome as nome_inventario,fase_tipo_prodotto_finito.numero from conta_materiale Join inventario on conta_materiale.id_inventario=inventario.id join fase_tipo_prodotto_finito on conta_materiale.id_fase_tipo_prodotto_finito =fase_tipo_prodotto_finito.id join tipo_prodotto_finito on fase_tipo_prodotto_finito.id_tipo_prodotto_finito group by conta_materiale.id,conta_materiale.id_inventario,conta_materiale.id_fase_tipo_prodotto_finito
Query Error:Error: ER_WRONG_FIELD_WITH_GROUP: Expression #6 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.tipo_prodotto_finito.nome' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
se metto nel group_by anche tipo_prodotto_finito.nome ho diversi id (uno per ogni tipo prodotto finito)
Ultima modifica di pippuccio76; 24-12-2022 a 16:39
Ho risolto , mi mancava un valore nel group by :;codice:select conta_materiale.id , conta_materiale.id_inventario , conta_materiale.numero_conta , inventario.nome as nome_inventario , fase_tipo_prodotto_finito.numero , tipo_prodotto_finito.nome from conta_materiale Join inventario on conta_materiale.id_inventario = inventario.id join fase_tipo_prodotto_finito on conta_materiale.id_fase_tipo_prodotto_finito = fase_tipo_prodotto_finito.id join tipo_prodotto_finito on fase_tipo_prodotto_finito.id_tipo_prodotto_finito = tipo_prodotto_finito.id group by conta_materiale.id , conta_materiale.id_inventario , conta_materiale.id_fase_tipo_prodotto_finito , tipo_prodotto_finito.nome
curiosità personale: a cosa ti serve usare la GROUP BY() se poi nella SELECT non usi nessuna funzione di aggregazione (tipo COUNT(), SUM(), MIN(),...) ?
allora forse ti basta una order by... usare Group By() senza aggregazioni serve solo a far lavorare di più il server
Secondo me devi riformulare la domanda, scrivendo esplicitamente quale risultato vuoi ottenere e postando anche la struttura delle tue tabelle.
E' normale che a parità di id tu abbia più righe se non raggruppi, in quanto l'id di conta_materiale, per come è la JOIN potrebbe essere presente in più inventari. Ma se non espliciti bene l'obiettivo e la struttura del DB risulta difficile aiutarti