AlessandraAzevedo Postado Fevereiro 16, 2012 Denunciar Share Postado Fevereiro 16, 2012 OI PESSOAL, TO ENROSCADA NESSE SELECT AQUI.....SELECT distinct tab_grade_turma_disciplina_horario.horario_id,tab_disciplina.descricao AS disciplina, tab_grade_turma_disciplina.id AS grade_turma_disciplina_id, tab_grade_turma_disciplina.grade_turma_id, tab_grade_turma_disciplina.disciplina_id, ISNULL(tab_grade_turma_disciplina.professor_id, 0) AS PROFESSOR_ID, ISNULL(tab_grade_turma_disciplina.localaula_id, 0) AS LOCALAULA_ID, tab_grade_turma_disciplina.data_inicial, tab_grade_turma_disciplina.data_final, tab_professor.nome AS professor, tab_localaula.descricao AS localaula, tab_horario.horario_inicial, tab_horario.horario_final, CASE WHEN tab_horario.diasemana = 0 THEN '• Domingo ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) WHEN tab_horario.diasemana = 1 THEN '• Segunda - feira ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) WHEN tab_horario.diasemana = 2 THEN '• Terça - feira ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) WHEN tab_horario.diasemana = 3 THEN '• Quarta - feira ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) WHEN tab_horario.diasemana = 4 THEN '• Quinta - feira ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) WHEN tab_horario.diasemana = 5 THEN '• Sexta - feira ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) WHEN tab_horario.diasemana = 6 THEN '• Sábado ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) END AS Horarios FROM tab_grade_turma_disciplina INNER JOIN tab_grade_turma ON tab_grade_turma_disciplina.grade_turma_id = tab_grade_turma.id LEFT OUTER JOIN tab_professor ON tab_grade_turma_disciplina.professor_id = tab_professor.id LEFT OUTER JOIN tab_localaula ON tab_grade_turma_disciplina.localaula_id = tab_localaula.id INNER JOIN tab_disciplina ON tab_grade_turma_disciplina.disciplina_id = tab_disciplina.id inner JOIN tab_grade_turma_disciplina_horario ON tab_grade_turma_disciplina_horario.grade_turma_disciplina_id = tab_grade_turma_disciplina.id inner JOIN tab_horario ON tab_horario.id = tab_grade_turma_disciplina_horario.horario_id WHERE (tab_grade_turma_disciplina.grade_turma_id = 691) ESSE SELECT ME RETORNA: HORARIO_ID DISCIPLINA_ID GRADE_TURMA_DISCIPLINA_ID GRADE_TURMA PROFESSOR LOCALAULA HORARIOS.....ETC 62 61 2563 691 JAIME GALVÃO SALA 34 • Quarta - feira 08:00- 10:00:00 64 61 2563 691 JAIME GALVÃO SALA 34 • Sexta - feira 06:00- 07:00:00 E EU GOSTARIA QUE ELE ME RETORNASSE HORARIO_ID DISCIPLINA_ID GRADE_TURMA_DISCIPLINA_ID GRADE_TURMA........ PROFESSOR LOCALAULA 62 61 2563 691 JAIME GALVÃO SALA 34 HORARIOS..... • Quarta - feira 08:00- 10:00:00 / • Sexta - feira 06:00- 07:00:00TENHO QUE USAR O GROUP BY? TENTEI O DISTINCT MAS não MUDOU NADA.....É COMO SE EU FOSSE FAZER UM FOREACH PRA COLUNA "HORARIOS" E CONCATENAR TUDO NO MESMO REGISTRO.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 16, 2012 Denunciar Share Postado Fevereiro 16, 2012 Boa tarde Alessandra, Da forma que realizou o select, não tem como fazer a concatenação. Utilizando case, o resultado "entrará" apenas em uma das cláusulas... Você consegue manipular o resultado do select em algum aplicativo? Estou peguntando pois algumas implementações são bem mais simples (e rápidas) nos códigos fontes, do que no sql. Não sei para que serviria este resultado (visualização em aplicativo, estatistica, relatório, etc), mas preferiria retirar os cases e passar para o fonte este tratamento: - Os dias da semana seriam retornados como números mesmo, onde o código fonte colocaria os escritos. - Os horários viviriam do jeito q postou, mas testaria: se o professor for o mesmo, concatenaria os horários. As plataformas de desenvolvimento possuem funcionalidades mais voltadas a implementações, havendo mais recursos do que o sql. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 AlessandraAzevedo Postado Fevereiro 16, 2012 Autor Denunciar Share Postado Fevereiro 16, 2012 Boa tarde Alessandra, Da forma que realizou o select, não tem como fazer a concatenação. Utilizando case, o resultado "entrará" apenas em uma das cláusulas... Você consegue manipular o resultado do select em algum aplicativo? Estou peguntando pois algumas implementações são bem mais simples (e rápidas) nos códigos fontes, do que no sql. Não sei para que serviria este resultado (visualização em aplicativo, estatistica, relatório, etc), mas preferiria retirar os cases e passar para o fonte este tratamento: - Os dias da semana seriam retornados como números mesmo, onde o código fonte colocaria os escritos. - Os horários viviriam do jeito q postou, mas testaria: se o professor for o mesmo, concatenaria os horários. As plataformas de desenvolvimento possuem funcionalidades mais voltadas a implementações, havendo mais recursos do que o sql.E se ao invés de eu trazer na minha gridview diretamente, pelo RowDataBound da grid eu adicionar a coluna com os dados de acordo com a linha q ele está criando?Mas como adiciono isso? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 16, 2012 Denunciar Share Postado Fevereiro 16, 2012 Se quiser fazer diretamente no sql e o mesmo retornar os dados certinhos, terá q "programar" (da mesma forma que faria no código fonte). Terá que criar uma temporária, fazer um while (ou cursor) para testar linha a linha e ir concatenando os dados de acordo com o profissional. Será mais dificil e trabalhoso, mas retornará o que deseja. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 AlessandraAzevedo Postado Fevereiro 17, 2012 Autor Denunciar Share Postado Fevereiro 17, 2012 Se quiser fazer diretamente no sql e o mesmo retornar os dados certinhos, terá q "programar" (da mesma forma que faria no código fonte). Terá que criar uma temporária, fazer um while (ou cursor) para testar linha a linha e ir concatenando os dados de acordo com o profissional. Será mais dificil e trabalhoso, mas retornará o que deseja.Bom to tentando outras soluções por aqui...pensei em algo tipo assimselect ( select tab_horario.id, case WHEN tab_horario.diasemana = 0 THEN '• Domingo ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) WHEN tab_horario.diasemana = 1 THEN '• Segunda - feira ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) WHEN tab_horario.diasemana = 2 THEN '• Terça - feira ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) WHEN tab_horario.diasemana = 3 THEN '• Quarta - feira ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) WHEN tab_horario.diasemana = 4 THEN '• Quinta - feira ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) WHEN tab_horario.diasemana = 5 THEN '• Sexta - feira ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) WHEN tab_horario.diasemana = 6 THEN '• Sábado ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) END AS Horarios from tab_grade_turma_disciplina INNER JOIN tab_grade_turma ON tab_grade_turma_disciplina.grade_turma_id = tab_grade_turma.id LEFT OUTER JOIN tab_professor ON tab_grade_turma_disciplina.professor_id = tab_professor.id LEFT OUTER JOIN tab_localaula ON tab_grade_turma_disciplina.localaula_id = tab_localaula.id INNER JOIN tab_disciplina ON tab_grade_turma_disciplina.disciplina_id = tab_disciplina.id LEFT OUTER JOIN tab_grade_turma_disciplina_horario ON tab_grade_turma_disciplina_horario.grade_turma_disciplina_id = tab_grade_turma_disciplina.id LEFT OUTER JOIN tab_horario ON tab_horario.id = tab_grade_turma_disciplina_horario.horario_id where tab_horario.id= 62 group by tab_horario.id, tab_horario.diasemana, tab_horario.horario_inicial, tab_horario.horario_final) + (select case WHEN tab_horario.diasemana = 0 THEN '• Domingo ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) WHEN tab_horario.diasemana = 1 THEN '• Segunda - feira ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) WHEN tab_horario.diasemana = 2 THEN '• Terça - feira ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) WHEN tab_horario.diasemana = 3 THEN '• Quarta - feira ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) WHEN tab_horario.diasemana = 4 THEN '• Quinta - feira ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) WHEN tab_horario.diasemana = 5 THEN '• Sexta - feira ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) WHEN tab_horario.diasemana = 6 THEN '• Sábado ' + CONVERT(varchar(12), tab_horario.horario_inicial, 108) + ' - ' + CONVERT(varchar(12), tab_horario.horario_final, 108) END AS Horarios from tab_horario where id = 64 group by tab_horario.id, tab_horario.diasemana, tab_horario.horario_inicial, tab_horario.horario_final) as teste2 from tab_horariosó que tá dando o erro....Only one expression can be specified in the select list when the subquery is not introduced with EXISTSAlguém sabe o que é? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 17, 2012 Denunciar Share Postado Fevereiro 17, 2012 Boa tarde Alessandra, Retire todos os alias que colocou e faça o teste. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 AlessandraAzevedo Postado Fevereiro 19, 2012 Autor Denunciar Share Postado Fevereiro 19, 2012 Boa tarde Alessandra, Retire todos os alias que colocou e faça o teste.Eu já fiz isso e nada....acho q vou me matar...kkkk Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 23, 2012 Denunciar Share Postado Fevereiro 23, 2012 Bom dia Alessandra, você está concatenando dois subselects, ok? No final do script tem a sintaxe from tab_horario. Comente esta parte e tente executar novamente. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
AlessandraAzevedo
OI PESSOAL, TO ENROSCADA NESSE SELECT AQUI.....
ESSE SELECT ME RETORNA: E EU GOSTARIA QUE ELE ME RETORNASSETENHO QUE USAR O GROUP BY? TENTEI O DISTINCT MAS não MUDOU NADA.....
É COMO SE EU FOSSE FAZER UM FOREACH PRA COLUNA "HORARIOS" E CONCATENAR TUDO NO MESMO REGISTRO....
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.