GARANTIR DESCONTO

Fórum sql complexa com subqueries #357143

14/04/2008

0

Galera, não estou conseguindo fazer um sql e gostaria mais uma vez contar com a ajuda de vcs..
minhas tabelas são as seguintes

Contratante (CodContratante, Contratante)
Classificacao_Ocorr(CodClassificacao_Ocorr,Descricao)
Atendimento(CodAtendimento,Data,hora,CodtipoLigacao,CodContratante)
Ocorrencia(CodOcorrencia,LocalOcorrencia,descricaoocorrencia,CodAtendimento,protocolo)
Acompanhamento(CodAcompanhamento,Data,hora,CodTipoContato,CodOcorrencia)

elas estão em formato mestre-detalhe como podem ver, menos a tabela contratante e classificacao_ocorr..

o meu sql é o seguinte

SELECT     
A.CodAtendimento, A.Data, A.Hora, A.TipoLigacao, 
O.DescricaoOcorrencia, O.Protocolo, 
C.Descricao AS SITUACAO, C.CodClassificacao_Ocorr, 
CO.Contratante
FROM ATENDIMENTO A INNER JOIN
OCORRENCIA O ON A.CodAtendimento = O.CodAtendimento INNER JOIN
CONTRATANTE CO ON A.CodContratante = CO.CodContratante INNER JOIN
CLASSIFICACAO_OCORR C ON O.CodClassificacao_Ocorr = C.CodClassificacao_Ocorr
WHERE((SELECT     COUNT(AC.CodAcompanhamento)
FROM         Acompanhamento AC
WHERE     AC.CodOcorrencia = O.CodOcorrencia) = 1) AND
((SELECT     AC.CODTIPOCONTATO
FROM         ACOMPANHAMENTO AC
WHERE     AC.CodOcorrencia = O.CodOcorrencia) = 5)
ORDER BY O.Protocolo, C.CodClassificacao_Ocorr, A.Data, A.Hora


meu sql é para puxar os dados acima onde não tiver nenhum acompanhamento relacionado a ocorrencia,
ou se tiver um acompanhamento mas o Codtipocontato for = a 5 (que na minha tabela é sem contato)

onde estou errando???

valeu galera..[/code]


Eric.miranda

Eric.miranda

Responder

Posts

14/04/2008

Eric.miranda

Fala aí galera,
consegui algo aqui..não sei se é a forma correta mas pelo menos parece que funcionou..vai aí o código para uso se alguém precisar..
valeu

SELECT    
 A.CODATENDIMENTO, A.DATA, A.HORA, A.TIPOLIGACAO, O.DESCRICAOOCORRENCIA, O.PROTOCOLO, C.DESCRICAO AS SITUACAO, C.CODCLASSIFICACAO_OCORR, 
 CO.CONTRATANTE
FROM   ATENDIMENTO A INNER JOIN
OCORRENCIA O ON A.CODATENDIMENTO = O.CODATENDIMENTO INNER JOIN
CONTRATANTE CO ON A.CODCONTRATANTE = CO.CODCONTRATANTE INNER JOIN
CLASSIFICACAO_OCORR C ON O.CODCLASSIFICACAO_OCORR = C.CODCLASSIFICACAO_OCORR LEFT OUTER JOIN
ACOMPANHAMENTO AC ON O.CODOCORRENCIA = AC.CODOCORRENCIA
WHERE     
((SELECT COUNT(AC.CODACOMPANHAMENTO) FROM ACOMPANHAMENTO AC  WHERE AC.CODOCORRENCIA = O.CODOCORRENCIA) = 1) AND (AC.CODTIPOCONTATO = 5) 
OR
((SELECT COUNT(AC.CODACOMPANHAMENTO) FROM ACOMPANHAMENTO AC  WHERE AC.CODOCORRENCIA = O.CODOCORRENCIA) = 0)

ORDER BY O.PROTOCOLO, C.CODCLASSIFICACAO_OCORR, A.DATA, A.HORA



Responder

Gostei + 0

16/04/2008

Mayron.hm

ja pensou em fazer uma sp para fazer uma pré filtragem determinada por vc?


Responder

Gostei + 0

17/04/2008

Emerson Nascimento

não bastaria:
SELECT   
  A.CODATENDIMENTO, A.DATA, A.HORA, A.TIPOLIGACAO,
  O.DESCRICAOOCORRENCIA, O.PROTOCOLO,
  C.DESCRICAO AS SITUACAO, C.CODCLASSIFICACAO_OCORR,
  CO.CONTRATANTE
FROM
  ATENDIMENTO A
INNER JOIN
  OCORRENCIA O ON O.CODATENDIMENTO = A.CODATENDIMENTO
INNER JOIN
  CONTRATANTE CO ON CO.CODCONTRATANTE = A.CODCONTRATANTE
INNER JOIN
  CLASSIFICACAO_OCORR C ON C.CODCLASSIFICACAO_OCORR = O.CODCLASSIFICACAO_OCORR
LEFT JOIN
  ACOMPANHAMENTO AC ON AC.CODOCORRENCIA = O.CODOCORRENCIA
WHERE
  AC.CODACOMPANHAMENTO IS NULL OR AC.CODTIPOCONTATO = 5



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar