Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
tipo
descricao
data
Tabela encaminhamento:
codencam
codsolicitacao
secretaria
siglasecretaria
textoencam
observacao
tipoencam
dataencam
horaencam
dataatend
É 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.
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
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.
Obrigado pela ajuda Periscuelo!
Mesmo usando o comando com a vírgula o erro ainda continua acontecendo. Será que o comando está errado?
Poste as estruturas das tabelas para podermos entender oque ocorre.
Abraços.
Voce nao pode usar o DISTINCT no meio da consulta tem que ser logo no começo.
SELECT DISTINCT ....
Bom dia amigos!
Segue abaixo a estrutura das tabelas
Tabela solicitacao
/applications/core/interface/imageproxy/imageproxy.php?img=http://img5.imageshack.us/img5/7085/tabelasolicitacao.png&key=d2a5bf03c78edbff366e268a7abb05ac7502a0308e27a3faf92fbf7c24a793a1" alt="tabelasolicitacao.png" />
Tabela Encaminhamentos
/applications/core/interface/imageproxy/imageproxy.php?img=http://img263.imageshack.us/img263/8254/tabelaencaminhamento.png&key=348469bcb6532a294fb9a5f7ac18defb8a5baeb37fc1232a5c64f3061388ca3a" alt="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.
Amigo,
utilize neste caso o GROUP BY codsolicitacao
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?
Somente o GROUP BY ja resolve o problema.
Conseguiu o resultado esperado?
Abrs
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!!!
cara o JOIN já está feito, é só adicionar as colunas que você quer que apareçam no relatório.