quarta-feira, 2 de agosto de 2023

Saiba quem participou de eventos com MySQL e a função ‘group_concat’

 Uma função muito útil do MySQL é a “group_concat”, que concatena várias linhas em um só campo. Neste “post” vamos colocá-la em prática para verificar quais foram os participantes de determinados eventos.

O primeiro passo é ter uma tabela com os participantes. Use o código abaixo para criar a sua (neste “post”, a tabela se chamará “alunos”):

 CREATE TABLE `alunos` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(50) NOT NULL,
PRIMARY
KEY (`id`)
);

 Agora insira alguns nomes; a minha tabela ficou assim (recomendo que sejam vários e observe a ordem):

 


 Agora vamos criar a tabela de cursos:

 CREATE TABLE `cursos` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`curso` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
);

 Neste “post”, vamos inserir apenas quatro cursos:


 Para relacionar as duas tabelas, vamos agora criar uma terceira, que chamaremos de cursos_alunos; repare que, além da coluna de chave primária (id), também serão criadas duas colunas, sendo uma para os “ids” dos cursos e outra para os “ids” dos alunos:

 CREATE TABLE `cursos_alunos` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`idcurso` INT(10) NOT NULL,
`idAluno` INT(10) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
);

 


Agora já podemos criar a consulta que nos exibirá os cursos e os respectivos alunos que os frequentaram:

 select cursos.curso, group_concat(" ", alunos.nome) alunos
from cursos
INNER JOIN
cursos_alunos
on
cursos_alunos.idcurso = cursos.id
INNER Join
alunos
on
cursos_alunos.idAluno = alunos.id
group by cursos.curso;

Observe que os alunos “Tite” e “Vanderlei” frequentaram dois cursos: o de PHP e o de Java; o que está sendo exibido corretamente.

Por hoje é só, pessoal.