Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problemas com consulta


Julio Marques

Pergunta

Boa noite pessoal;

Bem pessoal o seguinte (espero que me entendam ;P).

Estou tentando criar uma consulta que me retorne na tela os chamados que estão em aberto, até ai tu bem, tudo bem por um momento, porque assim que tento buscar um outro campo em outra tabela em meu bd, ele até trás os resultados, mas esta duplicando eles.

Exemplo, tenho 3 chamados em aberto, ele tras esses resultados, mas os multiplica pelas ares que tenho cadastradas, tipo tenho 3 areas de atendimento e ele envia esses 3 chamados um para cada area que no final eu tenho 9 chamados na tela.

Tenho duas consultas aqui uma me tras os valores corretos mas a outra que iria me mostrar para onde o chamado foi aberto (area de atendimento) este que multiplica minhas consultas.

Eis o que funciona sem ter a area que ira atender o chamado:

SELECT numero As `N. Chamado:`, 
contato As `Aberto por:`, 
ocorrencias.descricao As `Descritivo do chamado:`, 
ocorrencias.telefone As `Ramal para contato:`, 
ocorrencias.data_abertura As `Data da Abertura`, 
localizacao.`local` As `Setor solicitante`
FROM ocorrencias, localizacao
WHERE ocorrencias.local = localizacao.loc_id = status = 1

E quando tento fazer com esta outra consulta ele me mostrar para onde o chamado esta sendo feito, mas ele repete os campos, eis o codigo:

Os campos em NEGRITO são os que eu adicionei ao de cima.

SELECT numero As `N. Chamado:`,

contato As `Aberto por:`,

ocorrencias.descricao As `Descritivo do chamado:`,

ocorrencias.telefone As `Ramal para contato:`,

ocorrencias.data_abertura As `Data da Abertura`,

localizacao.`local` As `Setor solicitante`,

ocorrencias.sistema As `Destina para`

FROM ocorrencias, localizacao, sistemas

WHERE ocorrencias.local = localizacao.loc_id = status = 1

and ocorrencias.sistema = sistemas.sis_id = sistemas.sistema

Se puderem me dar uma forcinha aí please, ta faltando pouco pra terminar este projeto e estou perdido nessa parte agora...

Abraço.

Editado por Denis Courcy
Melhoria de entendimento do código
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'Julio Marques'

Em toda minha experiência esta é a primeira vez que vejo uma igualdade tripla. é isto mesmo?

WHERE ocorrencias.local = localizacao.loc_id = status = 1
Neste outro ponto você compara uma atributo de um registro com outro atributo do mesmo registro na mesma tabela. É isto mesmo?
and ocorrencias.sistema = sistemas.sis_id = sistemas.sistema
Creio que sua lógica está errada desde o começo. Experimente escrever na forma abaixo. Manterá seu código mais limpo.
SELECT numero As `N. Chamado:`, 
contato As `Aberto por:`, 
ocorrencias.descricao As `Descritivo do chamado:`, 
ocorrencias.telefone As `Ramal para contato:`, 
ocorrencias.data_abertura As `Data da Abertura`, 
localizacao.`local` As `Setor solicitante`
FROM ocorrencias
INNER JOIN localizacao ON ocorrencias.local = localizacao.loc_id
WHERE status = 1
Acrescente outro INNER JOIN para sistemas. Assim:
SELECT numero As `N. Chamado:`, 
contato As `Aberto por:`, 
ocorrencias.descricao As `Descritivo do chamado:`, 
ocorrencias.telefone As `Ramal para contato:`, 
ocorrencias.data_abertura As `Data da Abertura`, 
localizacao.`local` As `Setor solicitante`, 
ocorrencias.sistema As `Destina para`
FROM ocorrencias
INNER JOIN localizacao ON ocorrencias.local = localizacao.loc_id
INNER JOIN sistemas ON ocorrencias.sistema = sistemas.sis_id
WHERE status = 1

Informe o resultado.

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde meu caro Denis Courcy;

Bem digamos que esta igualdade tripla foi o que me surgiu na mente no momento, :wacko: .

Sou novo na área e estou aprendendo bastante na pratica mesmo, e agora já sei como usar os Inner Join corretamente atraves do seu esclarecimento.

Muito obrigado pela ajuda nesta "Travada" que dei, este que você me passou funcionou perfeitamente, fiz somente uma alteração para adequar ao que eu estava solicitando, do seu jeito estava puchando o ID do Setor (Nº) no sistema e não o Local do Setor (Texto), esta alteração esta com destaque abaixo abaixo.

Select ocorrencias.numero As `N. Chamado:`,
  ocorrencias.contato As `Aberto por:`,
  ocorrencias.descricao As `Descritivo do chamado:`,
  ocorrencias.telefone As `Ramal para contato:`,
  ocorrencias.data_abertura As `Data da Abertura`,
  localizacao.local As `Setor solicitante`,
  sistemas.sistema As `Destina para`<==================== onde fiz a alteração.     
From ocorrencias
Inner Join localizacao On ocorrencias.local = localizacao.loc_id
Inner Join sistemas On ocorrencias.sistema = sistemas.sis_id
Where ocorrencias.status = 1

Mais uma vez, muito obrigado pelo auxilio que me concedeu, tenha certeza que será de grande ajuda pra mim.

VALEU!!!

Abração.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...