Usuário com melhor resposta
Consulta desconsiderando dados duplicados!

Pergunta
-
Estou com um problema em fazer uma consulta sem trazer dados duplicados eu consigo fazer sem trazer o idTabela quando passo o idTabela ele duplica, alguem poderia me ajudar?
select A.idAgenda,T.idTabela,T.nmProfissional,T.nmProcedimento, A.dtData from vwMedAgenda A left outer join vwTabela T ON A.idProfissional = T.idProfissional where CONVERT(date,A.dtData,103) = CONVERT(date,'21/01/2015',103) and T.idProfissional = 31 and T.idProcedimento = 176 and T.idConvenio = 1 and A.cdStatus = 'DISPONÍVEL' group by A.idAgenda,T.idTabela, T.nmProfissional,T.nmProcedimento,A.dtData order by A.idAgenda
Respostas
-
Raniel,
Normalmente quanto este tipo de duplicação acontece é recorrente de uma junção de dados teoricamente mal elaborada.
Talvez uma alternativa seja você tentar quebrar este código em duas partes fazendo uso de CTE.
Já pensou nisso?
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 15 de janeiro de 2015 18:08
- Marcado como Resposta Ricardo Barbosa Cortes sexta-feira, 16 de janeiro de 2015 12:50
-
O código sem o ID, você pode enviar para o DataSource de um GridView, por exemplo; já o código com o ID, você pode enviar para um LIST e armazenar esse LIST em SESSION, conforme exemplo abaixo.
// ARMAZENAMENTO DA LISTA. Session["Usuario"] = usuario; // RECUPERAÇÃO DA LISTA. List<UsuarioModel> usuario = (List<UsuarioModel>)Session["Usuario"];
Abs.
Dicas de programação em .net, C# e SQL - http://smcode.com.br/blog.aspx
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 15 de janeiro de 2015 18:08
- Marcado como Resposta Ricardo Barbosa Cortes sexta-feira, 16 de janeiro de 2015 12:50
-
Bom dia,
Raniel, você vai precisar do idTabela de qual linha?
Talvez uma alternativa seja utilizar uma função de agregação nessa coluna. Ex:
select A.idAgenda, MIN(T.idTabela) as idTabela, T.nmProfissional, T.nmProcedimento, A.dtData from -- ... group by A.idAgenda, T.nmProfissional, T.nmProcedimento, A.dtData
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 15 de janeiro de 2015 18:08
- Marcado como Resposta Ricardo Barbosa Cortes sexta-feira, 16 de janeiro de 2015 12:50
-
Deleted
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 15 de janeiro de 2015 18:08
- Marcado como Resposta Ricardo Barbosa Cortes sexta-feira, 16 de janeiro de 2015 12:50
quarta-feira, 14 de janeiro de 2015 14:30
Todas as Respostas
-
Bom dia Raniel,
Sem o ID da tabela você consegue trazer os dados não duplicados porque no comando DISTINCT ele verifica a linha inteira, então sem o ID a linha inteira é igual. Porém quando você consulta o ID também, esse campo impede que a linha inteira seja igual.
Nesse caso, se você não quiser dados duplicados, terá que fazer a consulta sem o ID da tabela mesmo.
Abs.
Dicas de programação em .net, C# e SQL - http://smcode.com.br/blog.aspx
-
-
Então não tem jeito mesmo, pelo o que eu conheço.
Você poderia fazer 2 consultas, uma sem o ID (para exibição na tela) e outra com o ID (armazenada em sessão), para você poder utilizar o ID na execução do código.
Dicas de programação em .net, C# e SQL - http://smcode.com.br/blog.aspx
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 15 de janeiro de 2015 18:08
- Não Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 15 de janeiro de 2015 18:08
-
Então não tem jeito mesmo, pelo o que eu conheço.
Você poderia fazer 2 consultas, uma sem o ID (para exibição na tela) e outra com o ID (armazenada em sessão), para você poder utilizar o ID na execução do código.
Dicas de programação em .net, C# e SQL - http://smcode.com.br/blog.aspx
Tem algum exemplo dessa implementação?
-
O código sem o ID, você pode enviar para o DataSource de um GridView, por exemplo; já o código com o ID, você pode enviar para um LIST e armazenar esse LIST em SESSION, conforme exemplo abaixo.
// ARMAZENAMENTO DA LISTA. Session["Usuario"] = usuario; // RECUPERAÇÃO DA LISTA. List<UsuarioModel> usuario = (List<UsuarioModel>)Session["Usuario"];
Abs.
Dicas de programação em .net, C# e SQL - http://smcode.com.br/blog.aspx
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 15 de janeiro de 2015 18:08
- Marcado como Resposta Ricardo Barbosa Cortes sexta-feira, 16 de janeiro de 2015 12:50
-
Bom dia,
Raniel, você vai precisar do idTabela de qual linha?
Talvez uma alternativa seja utilizar uma função de agregação nessa coluna. Ex:
select A.idAgenda, MIN(T.idTabela) as idTabela, T.nmProfissional, T.nmProcedimento, A.dtData from -- ... group by A.idAgenda, T.nmProfissional, T.nmProcedimento, A.dtData
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 15 de janeiro de 2015 18:08
- Marcado como Resposta Ricardo Barbosa Cortes sexta-feira, 16 de janeiro de 2015 12:50
-
Raniel,
Normalmente quanto este tipo de duplicação acontece é recorrente de uma junção de dados teoricamente mal elaborada.
Talvez uma alternativa seja você tentar quebrar este código em duas partes fazendo uso de CTE.
Já pensou nisso?
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 15 de janeiro de 2015 18:08
- Marcado como Resposta Ricardo Barbosa Cortes sexta-feira, 16 de janeiro de 2015 12:50
-
Boa tarde Raniel,
Como está essa sua dúvida?
As respostas dos nossos amigos e colaboradores do fórum estão corretas, veja se serve para o seu caso, não esqueça de voltar e marcar a que te ajudar mais para manter o fórum sempre organizado.
Vou propor todas como resposta para você receber um aviso e se precisar continuarmos te ajudando ok?
Abraço
Ricardo Cortes Microsoft Contingent Staff
Esse contedo e fornecido sem garantias de qualquer tipo, seja expressa ou implicita.
MSDN Community Support