La vita del puntuale è una inferno di solitudini ingiuste
Achille in Achille pié veloce di Stefano Benni

PostHeaderIconGROUP BY e GROUP_CONCAT all'interno di una query SQL

Appunti - Sql
tipiconSQLPuò succedere di dover estrarre da una tabella di un database dei dati raggruppandoli per un determinato campo della SELECT che stiamo eseguendo e questo può essere fatto facilmente con una query del tipo:

SELECT * FROM nome_tabella GROUP BY campo_group;


Ad esempio la query
"SELECT modello, casa_produttirce FROM macchine GROUP BY casa_produttrice"
ritornerà n elementi, dove n è il numero di valori diversi per il campo casa_produttrice. In pratica se abbiamo 20 modelli di macchine, ma solo due case produttrici diverse otterremo solo 2 risultati con i il primo modello, per ciascuna casa, che la query ritornerà.

Se invece volessimo ottenere per ogni casa produttrice tutti i modelli delle macchine separati da una virgola dovremmo usare il comando GROUP_CONCAT con la seguente sintassi:

SELECT GROUP_CONCAT( campo ORDER BY campo_ordinamento SEPARATOR 'string' ) FROM nome_tabella GROUP BY campo_group;


Tornato all'esempio di cui sopra avremo:
"SELECT GROUP_CONCAT(modello ORDER BY modello SEPARATOR ', ') AS elenco modelli, casa_produttirce FROM macchine GROUP BY casa_produttrice".
Questa query tornerà due record aventi nel campo elenco_modelli, creato utilizzando il comando "AS", una stringa contenente tutti i modelli trovati, separati da una virgola.
In questo modo si riesce ad avere un report dei diversi valori del campo "modello" che altrimenti non sarebbero visibili.

facebook google live myspace stumbleupon twitter wikio yahoo