Pagina 1 di 1

[Risolto] utilizzo group_concat

Inviato: mercoledì 4 gennaio 2017, 15:24
da dino
salve, eccomi qua con l'ennesima domanda:
ho un piccolo db "scolastico" con cui gestisco i carichi orari dei docenti.
Ora vorrei utilizzarlo anche per predisporre lo schema dei verbali di classe.
si tratta indicativamente di 3 tabelle (per creare la relazione molti a molti: una classe ha più insegnanti ma un insegnante lavora in più classi)
con il sistema collaudato del "mail-merge" predispongo una copia del verbale dove inserisco il nome della classe e dove dovrei mettere l'elenco di tutti i docenti componenti il consiglio di classe.
quindi dovrei creare una query dove raggruppati nella classe ci sono tutti i nomi e cognomi dei docenti. Esempio
classe 1a presenti: pierino rossi, giovanni bianchi, laura verdi.....
tutti i record della tabella insegnanti dovrebbero quindi venire concatenati
SELECT DISTINCT "classe"."id_consiglio" "id_consiglio", "classe"."nome_classe" "nome_classe", GROUP_CONCAT( "docenti"."cognome_docente" ) AS "NOME" FROM "collegamento", "classe", "docenti" WHERE "collegamento"."id_classe_cool" = "classe"."id_consiglio" AND "collegamento"."id_docente_coll" = "docenti"."id_docente" ORDER BY "cognome_docente" ASC

mi da "accesso negato" ma se tolgo la parte GROUP_CONCAT( "docenti"."cognome_docente" ) AS "NOME" , funziona.
Dove sbaglio?

Re: utilizzo group_concat

Inviato: mercoledì 4 gennaio 2017, 15:53
da charlie
Ciao, GROUP_CONCAT non è supportata dalla versione 1.8 del database HSQLDB incorporato con Base. Devi passare alla versione 2.3.3. per utilizzarla. Per farlo devi utilizzare un connettore Jbdc oppure operare con uno splt database. Trovi rifermenti sul forum inglese.
In questo post viewtopic.php?f=13&t=7244&p=38278&hilit ... ase#p38278, ho proposto una soluzione per usare la versione 2 senza installarla.

Re: utilizzo group_concat

Inviato: mercoledì 4 gennaio 2017, 18:51
da dino
perfetto... funziona a meraviglia dopo aver seguito il tuo consiglio!
posto anche la query che potrebbe venir utile ad altri

SELECT GROUP_CONCAT( SPACE(2)|| "cognome_docente"|| SPACE(2) || "nome_docente") AS "NOME", "classe"."nome_classe", "collegamento"."id_classe_cool", "classe"."id_consiglio" FROM "collegamento" "collegamento", "classe" "classe", "docenti" "docenti" WHERE "collegamento"."id_classe_cool" = "classe"."id_consiglio" AND "collegamento"."id_docente_coll" = "docenti"."id_docente" GROUP BY "classe"."nome_classe", "collegamento"."id_classe_cool", "classe"."id_consiglio"