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
  

Mensagemem Qui, 24 Jan 2008 7:39 am

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:
Código: Selecionar todos
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
carlos12
Localização: rio

Mensagemem Qui, 24 Jan 2008 8:09 am

Brother,
Dá uma olhada neste código:
Código: Selecionar todos
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
Trevisolli
Localização: Araraquara - SP

Abraço,

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

Mensagemem Qui, 24 Jan 2008 11:58 am

Cara briadão pela dica mexi em algumas coisas mas deu certo.
brigadão camarada.
carlos12
Localização: rio

Mensagemem Qui, 24 Jan 2008 12:04 pm

beleza brother.
Precisando, tamos ai.
Trevisolli
Localização: Araraquara - SP

Abraço,

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


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem


Voltar para SQL

Quem está online

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