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.