select comparação com EXISTS

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
carlos12
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 123
Registrado em: Qua, 24 Out 2007 4:31 pm
Localização: rio

Olá pessoal estou com um problema que deve ser fácil pra vocês.

tipo tenho um SELECT que traz uma quantidade de consulta num veterinário e testa essas consultas com o exists mas ele está trazendo muita coisa que não é pra trazer, tipo:

Selecionar tudo

SELECT a.campo1, a.campo2 ,a.campo3
                    
FROM   tabela 1
                                     
WHERE  a.DTATENDIMENTO BETWEEN '&DATA_INI' AND '&DATA_FIM'


AND a.CDSERVICO IN ('123','456')

and a.CDveterinario = &CDveterinario

AND EXISTS(SELECT * FROM guia_de_atendimento gg, servico_de_atendimento aa--(AQUI ELE TESTA A 1º CONDIÇÃO QUE É AS CONSULTAS 123)--
           WHERE aa.cdserie = gg.cdserie   
             AND gg.dtatendimento BETWEEN '&DATA_INI' AND '&DATA_FIM'
             AND aa.cdservico = '123')
AND EXISTS(SELECT * FROM guia_de_atendimento gg, servico_de_atendimento aa--(AQUI ELE TESTA A 1º CONDIÇÃO QUE É AS CONSULTAS 456)--
           WHERE aa.cdserie = gg.cdserie   
             AND gg.dtatendimento BETWEEN '&DATA_INI' AND '&DATA_FIM'
             AND aa.cdservico = '456')
ORDER BY 1
com isso será verificado se teve atendimento desse animal nessas duas condições e o select tem que trazer somente as consultas que atende a essas duas condição, só que o select está trazendo também as consultas que atende somente a uma das condições, tem como eu melhorar esse select pra trazer só as que atende ao exists?


valeu Pessoal
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,
Dá uma olhada neste código:

Selecionar tudo

SELECT a.campo1, a.campo2 ,a.campo3 
                    
FROM   tabela1 a  
                                      
WHERE  a.DTATENDIMENTO BETWEEN '&DATA_INI' AND '&DATA_FIM' 


AND a.CDSERVICO IN ('123','456') 

and a.CDveterinario = &CDveterinario 

AND EXISTS(SELECT 1
             FROM guia_de_atendimento gg, servico_de_atendimento aa--(AQUI ELE TESTA A 1º CONDIÇÃO QUE É AS CONSULTAS 123 e 456)-- 
           WHERE aa.cdserie = gg.cdserie    
             AND gg.dtatendimento BETWEEN '&DATA_INI' AND '&DATA_FIM' 
             AND aa.cdservico in ('123','456')    
             AND aa.codigo1 = a.codigo1)-- associar aqui, como este exemplo
             -- Falta associar uma destas tabelas internas (guia_de_atendimento) ou (servico_de_atendimento)
             -- com  a query principal (Tabela 1)
             
ORDER BY 1 
carlos12
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 123
Registrado em: Qua, 24 Out 2007 4:31 pm
Localização: rio

Cara briadão pela dica mexi em algumas coisas mas deu certo.
brigadão camarada.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

beleza brother.
Precisando, tamos ai.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 19 visitantes