Bom dia.
Como o colega disse que possui um group_concat nos cursos dos alunos, imagino que o registro se repete para cada aluno conforme o curso então criei a seguinte tabela:
CREATE TABLE `alunos` (
`aluno` VARCHAR(50) NULL DEFAULT NULL,
`curso` VARCHAR(15) NULL DEFAULT NULL
)
ENGINE=InnoDB
;
Inseri alguns dados como demonstra a figura:
Para montar a grid criei uma view em cima da tabela alunos, isso facilitará alguns processos:
CREATE OR REPLACE
ALGORITHM = UNDEFINED VIEW view_alunos AS
SELECT
a.aluno as Aluno,
(
SELECT GROUP_CONCAT (b.curso)
FROM alunos b
WHERE b.aluno = a.aluno
) AS Cursos,
a.curso AS Curso
FROM alunos a
ORDER BY a.aluno, a.curso
SQL da aplicação Grid:
SELECT
aluno,
cursos,
curso
FROM view_alunos
GROUP BY aluno
Criar campo manual no filtro avançado:
onScriptInit:
//echo "<pre>";
//print_r({cursosSel});
//echo "</pre>";
$where = '';
$cursos = '';
if ({cursosSel}) {
foreach ({cursosSel} as $valor) {
$curso = explode('##@@',$valor);
$cursos .= "'{$curso[0]}',";
}
$cursos = trim($cursos,',');
$where = " curso in ($cursos) ";
}
if ($where) {
if(empty({sc_where_current})){
sc_select_where(add) = " WHERE $where ";
}else{
sc_select_where(add) = " AND $where";
}
}
onRecord: (frescura)
$_cursos = {cursos};
if ({cursosSel}) {
foreach ({cursosSel} as $valor) {
$curso = explode('##@@',$valor);
$_curso = $curso[0];
$_cursos = str_replace($_curso,'<b>'.$_curso.'</b>', $_cursos );
}
}
{cursos} = $_cursos;