doido 0 Denunciar post Postado Maio 13, 2013 Olá a todos Estou com um problema ao tentar o INNER JOIN abaixo: SELECT APAC.tipate,APAC.cdproc0 AS codigo,PROCEDIM.descricao AS procedimento,SUM(APAC.valor0) AS total,SUM(APAC.qtproc0) AS qtde FROM APAC INNER JOIN PROCEDIM ON APAC.cdproc0 = PROCEDIM.codigo WHERE dtemi= "20130401" GROUP BY APAC.tipate, APAC.cdproc0 Como podem ver, puxo os dados em sua maioria da tabela APAC, sendo que na mesma existe um código contido no campo cdproc0. A descrição desse código está na tabela PROCEDIM. Essas tabelas são de um sistema existente que estou importando. O problema é que na tabela procedim existem alguns códigos duplicados e com descrições diferentes. Por exemplo Tabela APAC Registro 1: cdproc0 = "12" Tabela PROCEDIM Registro 1: codigo = "12" descricao="descricao1" Registro 2: codigo = "13" descricao="descricao2" Nesses casos, mesmo com o GROUP BY, o INNER JOIN mostra duas vezes o registro 1 da tabela APAC, uma vez com referencia para o registro1 da tabela PROCEDIM e outra com referencia ao registro 2 da tabela PROCEDIM. Não estou conseguindo travar isso. Quero que nesses casos ele não duplique, mostrando apenas 1 vez o registro 1 da TABELA APAC, fazendo referencia com o Registro 1 da tabela PROCEDIM. Desde já agradeço a atenção Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 13, 2013 12 é diferente de 13, creio que seria 12 e 12 , não ? Há mais alguma coluna que desempate esre join ? A melhor solução (caso não) seria corrigir a tabela. Compartilhar este post Link para o post Compartilhar em outros sites
doido 0 Denunciar post Postado Maio 13, 2013 12 é diferente de 13, creio que seria 12 e 12 , não ? Há mais alguma coluna que desempate esre join ? A melhor solução (caso não) seria corrigir a tabela. Foi mal... 12 = 12... realmente. Quanto a questão de corrigir a tabela, é como falei, estou convertendo um sistema clipper, são muitos dados. Fica inviável corrigir. Alguém sugere alguma solução??? Pois estou encontrando problemas similares em outras junções. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 13, 2013 Mas tendo duas descrições como definir a correta ?! Compartilhar este post Link para o post Compartilhar em outros sites
doido 0 Denunciar post Postado Maio 13, 2013 Mas tendo duas descrições como definir a correta ?! Bem colocado! Em quase sua totalidade, as descrições são sinônimos, portanto defina sempre a primeira da lista a ser achada. No caso do exemplo, o registro 1 da tabela PROCEDIM. Com isso não terei que achar os milhares de duplicatas que tem ao longo dessas tabelas, e aos poucos, havendo reclamação de descrições incorretas (em caso de não serem sinônimos) eu vou eliminando aos poucos. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 13, 2013 COM MAX TALVEZ ... SELECT APAC.tipate,APAC. cdproc0 AS codigo, PROCEDIM.descricao AS procedimento, SUM(APAC.valor0) AS total, SUM(APAC.qtproc0) AS qtde FROM APAC INNER JOIN PROCEDIM ON APAC.cdproc0 = PROCEDIM.codigo WHERE dtemi= "20130401" AND PROCEDIM.descricao = (SELECT MAX(PROCEDIM2.descricao) FROM PROCEDIM PROCEDIM2 WHERE PROCEDIM2.codigo = PROCEDIM.codigo) GROUP BY APAC.tipate, Compartilhar este post Link para o post Compartilhar em outros sites
doido 0 Denunciar post Postado Maio 13, 2013 COM MAX TALVEZ ... SELECT APAC.tipate,APAC. cdproc0 AS codigo, PROCEDIM.descricao AS procedimento, SUM(APAC.valor0) AS total, SUM(APAC.qtproc0) AS qtde FROM APAC INNER JOIN PROCEDIM ON APAC.cdproc0 = PROCEDIM.codigo WHERE dtemi= "20130401" AND PROCEDIM.descricao = (SELECT MAX(PROCEDIM2.descricao) FROM PROCEDIM PROCEDIM2 WHERE PROCEDIM2.codigo = PROCEDIM.codigo) GROUP BY APAC.tipate, Matou a pau veio!!!!! Vlw mesmo... tópico resolvido Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 13, 2013 Ok, mas se quer um conselho arrume a tabela, o max é um paliativo. Compartilhar este post Link para o post Compartilhar em outros sites