SELECT
	nome_curso, nome_instituicao, nome_tipo_classificacao, frase
            FROM
                cursos cu
            LEFT JOIN
                instituicoes ON cu.id_instituicao = id_chave_instituicao
            LEFT JOIN
                campos_cursos cc ON cc.id_curso = id_chave_curso
            LEFT JOIN
                tipos_classificacoes tc2 ON cc.id_tipo_classificacao = id_chave_tipo_classificacao;
            LEFT JOIN
                (
                        SELECT REPLACE(
                                   TRIM(REPLACE(
                                       GROUP_CONCAT(concat(ct.caracter_antes, subconsulta.acentuada, ct.caracter_depois) ORDER BY ordem separator ''),
                                       CONCAT(' ', CHAR(8)),
                                       ''
                                   )),
                                   '  ',
                                   ' '
                               ) AS frase,
                               subconsulta.id_titulo as id_titulo,
                               subconsulta.id_tipo_classificacao as id_tipo_classificacao,
                               subconsulta.id_curso as id_curso
                        FROM (
                            SELECT DISTINCT t.acentuada acentuada, ordem, f.id_titulo as id_titulo, cc.id_tipo_classificacao as id_tipo_classificacao, cc.id_curso as id_curso
                            FROM tokens t
                            JOIN frases f ON f.id_token = t.id_chave_token
                            JOIN campos_cursos cc ON f.id_titulo = cc.id_titulo
                        ) AS subconsulta
                            LEFT JOIN classificacoes_tokens ct ON binary subconsulta.acentuada = ct.nome_token

                        GROUP BY subconsulta.id_titulo

                ) as t1 ON t1.id_tipo_classificacao = tc2.id_chave_tipo_classificacao;

