theteo 0 Denunciar post Postado Maio 30, 2015 Boa noite Amigos, o codigo abaixo funciona perfeitamente SELECT p.id_protocolo, p.protocolo, p.assunto, p.status, t.pdf FROM tbl_protocolos p, tbl_prot_tramitacoes t WHERE p.id_protocolo = t.id_protocolo AND t.id_setor_origem = 70 Como eu posso incluir um distinct pelo ID_PROTOCOLO pois da maneira abaixo não funciona SELECT DISTINCT p.id_protocolo, p.protocolo, p.assunto, p.status, t.pdf FROM tbl_protocolos p, tbl_prot_tramitacoes t WHERE p.id_protocolo = t.id_protocolo AND t.id_setor_origem = 70 Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 30, 2015 O DISTINCT vale para TODOS os campos , ou seja , o ID_PROTOCOLO se repete se houver um ASSUNTO diverso. Compartilhar este post Link para o post Compartilhar em outros sites
theteo 0 Denunciar post Postado Maio 30, 2015 Opa Motta, blz ? entao, mas tem como contornar isso ? Existe, talvez, uma outra forma pra fazer essa query ? Compartilhar este post Link para o post Compartilhar em outros sites
theteo 0 Denunciar post Postado Maio 30, 2015 Opa Motta, beleza ? entao, mas tem como contornar isso ? Existe, talvez, uma outra forma pra fazer essa query ? O problema ai Motta é quando eu envolvo outro campo de outra tabela. SELECT DISTINCT p.id_protocolo, p.protocolo, p.assunto, p.status FROM tbl_protocolos p, tbl_prot_tramitacoes t WHERE p.id_protocolo = t.id_protocolo AND t.id_setor_origem = 70 Me trás exatamente o que eu quero, mas quando uso o join ai ferra tudo. Fiz assim e tb funcionou SELECT DISTINCT p.id_protocolo, p.protocolo, p.assunto, p.status FROM tbl_protocolos p INNER JOIN tbl_prot_tramitacoes ON p.id_protocolo = tbl_prot_tramitacoes.id_protocolo AND tbl_prot_tramitacoes.id_setor_origem = 70 Agora como que eu seleciono campos da tbl_prot_tramitacoes ? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 30, 2015 A questão é que se existir mais uma tramitação para um protocolo ela gera mais um registro , não é erro. Compartilhar este post Link para o post Compartilhar em outros sites
theteo 0 Denunciar post Postado Maio 30, 2015 Entendi o que vc falou. Mas eu quero saber se existe uma forma de retornar os valores sem duplicar, algo como: SELECT DISTINCT p.id_protocolo, p.protocolo, p.assunto, p.status FROM tbl_protocolos p INNER JOIN tbl_prot_tramitacoes (pdf,data) ON p.id_protocolo = tbl_prot_tramitacoes.id_protocolo AND tbl_prot_tramitacoes.id_setor_origem = 70 Assim eu teria id_protocolo,protocolo,assunto,status,pdf,data Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 30, 2015 Não entendi faz um exemplo com dados por favor. Compartilhar este post Link para o post Compartilhar em outros sites
theteo 0 Denunciar post Postado Maio 30, 2015 tabela protocolo id_protocolonumeroassunto 1 | ra1 | teste 1 2 | ra2 | teste 2 3 | ra3 | teste 3 tabela prot_tramitacoes id_protocolo pdf setor_origem 1 | pdf1 | 701 | pdf1 | 80 ( descartar )1 | pdf1 | 70 ( descartar ) 2 | pdf2 | 70 2 | pdf2 | 2 ( descartar ) 2 | pdf2 | 70 ( descartar ) 3 | pdf3 | 70 O QUE EU QUERO COMO RESPOSTA ( where tabela prot_tramitacoes.setor_origem = 70 ) id_protocolo | numero | assunto | pdf 1 | ra1 | teste 1 | pdf12 | ra2 | teste 2 | pdf2 3 | ra3 | teste 3 | pdf3 SELECT DISTINCT p.id_protocolo, p.numero, p.assunto FROM tbl_protocolos p INNER JOIN tbl_prot_tramitacoes ON p.id_protocolo = tbl_prot_tramitacoes.id_protocolo AND tbl_prot_tramitacoes.id_setor_origem = 70 Isso ai em cima funciona, falta agora trazer o campo PDF da tabela tbl_prot_tramitacoes. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 30, 2015 http://forum.imasters.com.br/topic/512214-selecionando-item-max/ Qual o critério para descartar os outros "70" , talvez um subselect com max ou min. Compartilhar este post Link para o post Compartilhar em outros sites
theteo 0 Denunciar post Postado Maio 30, 2015 sem critério, só preciso q apareça apenas 1. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 30, 2015 Apenas colocar a coluna pdf no select não resolveu !? Compartilhar este post Link para o post Compartilhar em outros sites
theteo 0 Denunciar post Postado Maio 30, 2015 Mota, ainda nadaEu preciso do campo pdf da tbl_prot_tramitacoes ( onde há repetição do id_protocolo ) e preciso tb do campo numero e assunto da tbl_protocolos ( onde NAO há repetiçao do id_protocolo ) lembrando que é exatamente o id_protocolo a chave estrangeira. Agora, como eu trago esses registros ? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 30, 2015 SELECT DISTINCT p.id_protocolo, p.numero, p.assunto , t.pdf FROM tbl_protocolos p INNER JOIN tbl_prot_tramitacoes t ON p.id_protocolo = tbl_prot_tramitacoes.id_protocolo AND tbl_prot_tramitacoes.id_setor_origem = 70 !? Compartilhar este post Link para o post Compartilhar em outros sites
theteo 0 Denunciar post Postado Maio 30, 2015 SELECT DISTINCT p.id_protocolo, p.numero, p.assunto , t.pdf FROM tbl_protocolos p INNER JOIN tbl_prot_tramitacoes t ON p.id_protocolo = t.id_protocolo AND t.id_setor_origem = 70 traz repetidos mas, se eu fizer assim: SELECT DISTINCT p.id_protocolo, p.numero, p.assunto FROM tbl_protocolos p INNER JOIN tbl_prot_tramitacoes t ON p.id_protocolo = t.id_protocolo AND t.id_setor_origem = 70 Sem o pdf da tabela onde HÁ REPETIÇÃO do id_protocolo, dá CERTO, mas ai nao vem o pdf Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 31, 2015 SELECT DISTINCT p.id_protocolo, p.numero, p.assunto , t.pdf FROM tbl_protocolos p INNER JOIN tbl_prot_tramitacoes t ON p.id_protocolo = t.id_protocolo AND t.id_setor_origem = 70 ans t.numero = ( select max(t2.numero) from tbl_prot_transmissoees t2 where t2.id_protocolo = t.id_protocolo ) Compartilhar este post Link para o post Compartilhar em outros sites
theteo 0 Denunciar post Postado Maio 31, 2015 SELECT DISTINCT p.id_protocolo, p.protocolo, p.assunto , t.pdf FROM tbl_protocolos p INNER JOIN tbl_prot_tramitacoes t ON p.id_protocolo = t.id_protocolo AND t.id_setor_origem = 70 AND t.id_protocolo = ( select max(t2.id_protocolo) from tbl_prot_tramitacoes t2 where t2.id_protocolo = t.id_protocolo ) Motta, agradeço profundamente seu esforço em me ajudar. O código acima reflete exatamente o que tenho no banco, mas INFELIZMENTE ainda trouxe id_protocolo REPETIDO. NUMA TENTATIVA DESESPERADA, FIZ ASSIM TB:SELECT p.id_protocolo, p.protocolo, p.assunto , t.pdf FROM tbl_protocolos p INNER JOIN tbl_prot_tramitacoes t ON p.id_protocolo = t.id_protocolo AND t.id_setor_origem = 70 AND t.id_protocolo = ( select DISTINCT t2.id_protocolo from tbl_prot_tramitacoes t2 where t2.id_protocolo = p.id_protocolo ) Mesmo resultado do q vc postou. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 31, 2015 rodou o #15 !? o max não é em protocolo .... Compartilhar este post Link para o post Compartilhar em outros sites
theteo 0 Denunciar post Postado Maio 31, 2015 Motta, tudo OK agora. resolvido. mais uma vez obrigado por sua ajuda. SELECT b.id_protocolo, b.protocolo, b.assunto, b.assunto, a.numero_doc, a.pdf, a.data_tramitacao, DATEDIFF(now(),a.data_tramitacao) as diferenca FROM tbl_prot_tramitacoes AS a INNER JOIN tbl_protocolos AS b ON a.id_protocolo = b.id_protocolo WHERE a.id_tramitacao IN (SELECT MIN(id_tramitacao) FROM tbl_prot_tramitacoes WHERE id_setor_origem = 70 GROUP BY id_protocolo) Compartilhar este post Link para o post Compartilhar em outros sites