Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

acdestefani

[Resolvido] Consulta que exibe o registro apenas um vez

Recommended Posts

Olá Pessoal!

Tenho duas tabelas, uma chamada solicitacao, onde é feito o cadastro das solicitações. A outra se chama encaminhamento, onde é cadastrada para qual secretaria é encaminhada a solicitação. Acontece que, às vezes, a mesma solicitação é encaminhada mais de uma vez para a mesma secretaria.

 

Criei a consulta abaixo e testei-a no phpmyadmin. Funcionou corretamente, mas só que exibe apenas o campo codsoliticacao. Como preciso montar um relatório a partir dessa consulta, preciso de todos os campos da tabela solicitacao.

 

Como poderia alterar essa consulta para que ela exiba todos os campos?

 

SELECT DISTINCT encaminhamento.codsolicitacao
FROM solicitacao
LEFT JOIN encaminhamento ON solicitacao.codsolicitacao = encaminhamento.codsolicitacao
WHERE encaminhamento.secretaria = 'Secretaria 1'
ORDER BY DATA DESC , hora DESC

 

Estrutura das Tabelas

 

Tabela solicitacao

 

codsolicitacao

nome

rua

numero

complemento

cep

bairro

cidade

uf

telefone

email

tipo

descricao

data

 

Tabela encaminhamento:

 

codencam

codsolicitacao

secretaria

siglasecretaria

textoencam

observacao

tipoencam

dataencam

horaencam

dataatend

Compartilhar este post


Link para o post
Compartilhar em outros sites

É só colocar os outros campos na query amigo.

 

SELECT tabela1.campo1, tabela1.campo2, tabela1.campo3 FROM tabela1

Se quiser pode mesclar campos das duas tabelas

 

SELECT tabela1.campo1, tabela1.campo2, tabela2.campo1, tabela2.campo2 FROM tabela1 INNER JOIN tabela2 ON(...)

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pessoal! Muito obrigado pela ajuda!

 

O comando ficaria assim?

 

SELECT solicitacao.nome, solicitacao.rua, solicitacao.numero DISTINCT encaminhamento.codsolicitacao
FROM solicitacao
LEFT JOIN encaminhamento ON solicitacao.codsolicitacao = encaminhamento.codsolicitacao
WHERE encaminhamento.secretaria = 'Secretaria 1'
ORDER BY DATA DESC , hora DESC

 

É que dá o seguinte erro:

 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCT encaminhamento.codsolicitacao FROM solicitacao LEFT JOIN encaminhamen' at line 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da o erro porque de fato está fazendo errado. Esqueceu a vírgula.

 

Está assim:

 

SELECT solicitacao.nome, solicitacao.rua, solicitacao.numero DISTINCT encaminhamento.codsolicitacao
FROM solicitacao
LEFT JOIN encaminhamento ON solicitacao.codsolicitacao = encaminhamento.codsolicitacao
WHERE encaminhamento.secretaria = 'Secretaria 1'
ORDER BY DATA DESC , hora DESC

Deveria ser assim:

 

SELECT solicitacao.nome, solicitacao.rua, solicitacao.numero, DISTINCT encaminhamento.codsolicitacao
FROM solicitacao
LEFT JOIN encaminhamento ON solicitacao.codsolicitacao = encaminhamento.codsolicitacao
WHERE encaminhamento.secretaria = 'Secretaria 1'
ORDER BY DATA DESC , hora DESC

Tente ler e entender os erros mostrados, procurar o que falta perto da palavra que aparece no erro.

Assim fica mais fácil corrigir coisas simples.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste as estruturas das tabelas para podermos entender oque ocorre.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigos!

Segue abaixo a estrutura das tabelas

 

Tabela solicitacao

tabelasolicitacao.png

 

Tabela Encaminhamentos

tabelaencaminhamento.png

 

Caio,

 

Como ficaria minha consulta, sendo que gostaria de exibir vários campos, mas o único que usário no DISTINCT seria o campo codsolicitacao da tabela encaminhamento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda Caio!

É que tenho pouca experiência no Mysql e estou apanhando pra fazer essa consulta. Nesse caso uso somente o GROUP BY ou tenho que usar tbm o DISTINCT?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa a demora em responder. Infelizmente estava sem tempo pra mexer no sistema.

Obrigado a ajuda de todos, em especial ao Caio.

Usando o GROUP By consegui fazer a consulta. Foi mais simples que esperava. Segue abaixo como ficou o comando:

SELECT *
FROM solicitacao
LEFT JOIN encaminhamento ON solicitacao.codsolicitacao = encaminhamento.codsolicitacao
WHERE encaminhamento.secretaria = 'Secretaria 1'
GROUP BY encaminhamento.codsolicitacao
ORDER BY DATA DESC , hora DESC

 

Um grande abraço e mais um vez, muito obrigado!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.