with t1 as ( SELECT REPLACE( TRIM(REPLACE( GROUP_CONCAT(concat(subconsulta.caracter_antes, CASE WHEN subconsulta.nome_tipo_token = 'sigla' THEN UPPER(subconsulta.acentuada) WHEN subconsulta.nome_tipo_token IN ('preposicao', 'conjuncao') THEN LOWER(subconsulta.acentuada) ELSE CONCAT(UPPER(SUBSTRING(subconsulta.acentuada, 1, 1)), LOWER(SUBSTRING(subconsulta.acentuada, 2))) END, subconsulta.caracter_depois) ORDER BY ordem separator ''), CONCAT(' ', CHAR(8)), '' )), ' ', ' ' ) AS frase, subconsulta.id_titulo as id_titulo FROM ( SELECT DISTINCT t.acentuada acentuada, ordem, f.id_titulo as id_titulo, ct.caracter_antes as caracter_antes, ct.caracter_depois as caracter_depois, tt.nome_tipo_token as nome_tipo_token FROM tokens t JOIN frases f ON f.id_token = t.id_chave_token LEFT JOIN classificacoes_tokens ct ON binary t.acentuada = ct.nome_token LEFT JOIN tipos_tokens tt ON ct.id_tipo_token = id_chave_tipo_token ) AS subconsulta GROUP BY subconsulta.id_titulo ), estado_unico as ( select nome_estado, sigla_estado, codigo_ibge from estados where nome_estado = 'Santa Catarina' ) select distinct 'cidade' as tipo, tc2.nome_tipo_classificacao, estado_unico.nome_estado, t_cidade.frase as cidade from estado_unico, cursos c1 join cursos c2 ON c1.id_chave_curso = c2.id_chave_curso join campos_cursos cc1 ON c1.id_chave_curso = cc1.id_curso join tipos_classificacoes tc1 ON id_tipo_classificacao = tc1.id_chave_tipo_classificacao AND tc1.nome_tipo_classificacao = 'Estado' join campos_cursos cc2 ON c2.id_chave_curso = cc2.id_curso join tipos_classificacoes tc2 ON cc2.id_tipo_classificacao = tc2.id_chave_tipo_classificacao AND tc2.nome_tipo_classificacao = 'Cidade' join t1 as t_estado ON cc1.id_titulo = t_estado.id_titulo join t1 as t_cidade ON cc2.id_titulo = t_cidade.id_titulo join instituicoes i ON c1.id_instituicao = i.id_chave_instituicao join cidades ON nome_cidade = t_cidade.frase AND id_estado = estado_unico.codigo_ibge where t_cidade.frase COLLATE utf8mb4_general_ci like '%' AND i.id_chave_instituicao IN (1, 2, 3, 6, 7) ; 
