Rhicky Postado 24 de Novembro de 2008 Tópicos Que Criei: 120 Tópicos/Dia: 0.02 Meu Conteúdo: 400 Conteúdo/Dia: 0.06 Reputação: 0 Pontos/Conquistas: 3.200 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 44 Denunciar Compartilhar Postado 24 de Novembro de 2008 Amigos, Desenvolvi uma SQL, utilizando Left Join, para controle de vacinas no RM VITAE. Estou com um problema, a pessoa de código 8 tomou as vacinas 00007 e 00008, e neste caso, o resultado que preciso que retorne é apenas a pessoa 5, porém, o sistema está retornando a pessoa 5 e 8. O que será que está errado ? SELECT D.CODVACINA, B.CODIGO, B.NOME, A.CODVACINA, C.NOMEVACINA, A.DTAPLICACAO, A.NRDOSE, A.DTAPLICACAO+30 AS VENCIMENTO$ FROM PPESSOA B left join VCTRLVACINAL A on (a.codpessoa = b.codigo and a.codvacina = '00007') left join VCTRLVACINAL D on (d.codpessoa = b.codigo and a.codvacina = '00008') left join VVACINA C on c.codvacina = a.codvacina WHERE B.CODIGO IN ('5', '8') AND (A.DTAPLICACAO+30 <= '2008-03-15' OR A.DTAPLICACAO IS NULL) AND D.CODVACINA IS NULL Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Max Paulo Postado 24 de Novembro de 2008 Tópicos Que Criei: 12 Tópicos/Dia: 0.00 Meu Conteúdo: 88 Conteúdo/Dia: 0.01 Reputação: 0 Pontos/Conquistas: 560 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 24 de Novembro de 2008 Rhicky bom dia! Pelo que li na sua sentença, vc quer que traga todas as pessoas(tabela ppessoa), mesmo que não tenha dados nas tabelas vctrlvacinal e vvacina. É isso mesmo? OU você não quer quer retorne as pessoas que tomaram a vacina 00007 e 00008? OU você quer que retorne as pessoas que nunca tomaram a vacina ou a data de aplicacao mais 30 dias seja menor que 15/03/2008? Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Donaldson Postado 24 de Novembro de 2008 Tópicos Que Criei: 28 Tópicos/Dia: 0.00 Meu Conteúdo: 342 Conteúdo/Dia: 0.05 Reputação: 0 Pontos/Conquistas: 1.990 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 49 Denunciar Compartilhar Postado 24 de Novembro de 2008 Ricky, Observe sua cláusula where, está retornando a pessoa 5 e 8 porque possui isso como filtro (olha em destaque). Amigos, Desenvolvi uma SQL, utilizando Left Join, para controle de vacinas no RM VITAE. Estou com um problema, a pessoa de código 8 tomou as vacinas 00007 e 00008, e neste caso, o resultado que preciso que retorne é apenas a pessoa 5, porém, o sistema está retornando a pessoa 5 e 8. O que será que está errado ? SELECT D.CODVACINA, B.CODIGO, B.NOME, A.CODVACINA, C.NOMEVACINA, A.DTAPLICACAO, A.NRDOSE, A.DTAPLICACAO+30 AS VENCIMENTO$ FROM PPESSOA B left join VCTRLVACINAL A on (a.codpessoa = b.codigo and a.codvacina = '00007') left join VCTRLVACINAL D on (d.codpessoa = b.codigo and a.codvacina = '00008') left join VVACINA C on c.codvacina = a.codvacina WHERE B.CODIGO IN ('5', '8') AND (A.DTAPLICACAO+30 <= '2008-03-15' OR A.DTAPLICACAO IS NULL) AND D.CODVACINA IS NULL Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Fábio Maia Postado 26 de Dezembro de 2008 Tópicos Que Criei: 32 Tópicos/Dia: 0.00 Meu Conteúdo: 565 Conteúdo/Dia: 0.09 Reputação: 10 Pontos/Conquistas: 3.159 Conteúdo Resolvido: 0 Dias Ganho: 5 Status: Offline Idade: 43 Dispositivo: Windows Denunciar Compartilhar Postado 26 de Dezembro de 2008 E aí Ricky, resolvido? Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Participe da conversa
Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.