Fórum sql complexa com subqueries #357143
14/04/2008
0
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
Curtir tópico
+ 0Posts
14/04/2008
Eric.miranda
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
Gostei + 0
16/04/2008
Mayron.hm
Gostei + 0
17/04/2008
Emerson Nascimento
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)