rtamura Posted December 14, 2011 Report Share Posted December 14, 2011 Olá pessoal! Essa é a minha primeira postagem!Estou com um problema em que possuo duas tabelas Clientes e Veículos.Nem todos os clientes possuem veículos, portanto a coluna 'id_veiculos' da tabela Clientes fica em branco, neste caso.Então eu necessito ver todas as pessoas que estão cadastradas (independente se tem carro ou não), e utilizo a seguinte query:SELECT c.*, v.*FROM clientes AS c, veiculos AS v WHERE c.id_veiculos = v.id_veiculosSó que me retorna somente aqueles que POSSUEM carro, mas não aquelas que NÃO POSSUEM carro.Existe uma maneira de matar isso dentro de uma só query (nada de programação PHP, ASP, etc.) que contabilize também os que não possuem carro?Obrigado pela atenção! Quote Link to comment Share on other sites More sharing options...
0 Denis Courcy Posted December 14, 2011 Report Share Posted December 14, 2011 Olá pessoal! Essa é a minha primeira postagem!...Existe uma maneira de matar isso dentro de uma só query (nada de programação PHP, ASP, etc.) que contabilize também os que não possuem carro?Obrigado pela atenção!Use LEFT JOIN. Assim:SELECT c.*, v.* FROM clientes AS c LEFT JOIN veiculos AS v ON c.id_veiculos = v.id_veiculos E em vez de escrever o código como você fez para obter o conjunto INTERCESSÃO entre veiculos e clientes, use INNER JOIN. É mais limpo e mais fácil de entender. SELECT c.*, v.* FROM clientes AS c INNER JOIN veiculos AS v ON c.id_veiculos = v.id_veiculos Quote Link to comment Share on other sites More sharing options...
0 rtamura Posted December 14, 2011 Author Report Share Posted December 14, 2011 Muito obrigado Denis! :DSaberia me dizer, em relação a desempenho, entre utilizarSELECT c.*, v.* FROM clientes AS c INNER JOIN veiculos AS v ON c.id_veiculos = v.id_veiculos e SELECT c.*, v.* FROM clientes AS c, veiculos AS v WHERE c.id_veiculos = v.id_veiculosOu será que é a mesma coisa? Quote Link to comment Share on other sites More sharing options...
0 Denis Courcy Posted December 14, 2011 Report Share Posted December 14, 2011 Muito obrigado Denis! :D...Ou será que é a mesma coisa?Mesma coisa nunca é. A cláusula INNER JOIN torna o código mais claro e coloca a igualdade fora da cláusula WHERE deixando a clausula WHERE para o que realmente ela deve fazer que é "filtrar dados da consulta" Quote Link to comment Share on other sites More sharing options...
0 rtamura Posted December 14, 2011 Author Report Share Posted December 14, 2011 Vou dar uma estudada nesta cláusula para ver maiores detalhes.Obrigado pela orientação! Quote Link to comment Share on other sites More sharing options...
Question
rtamura
Olá pessoal! Essa é a minha primeira postagem!
Estou com um problema em que possuo duas tabelas Clientes e Veículos.
Nem todos os clientes possuem veículos, portanto a coluna 'id_veiculos' da tabela Clientes fica em branco, neste caso.
Então eu necessito ver todas as pessoas que estão cadastradas (independente se tem carro ou não), e utilizo a seguinte query:
SELECT c.*, v.*
FROM clientes AS c, veiculos AS v
WHERE c.id_veiculos = v.id_veiculos
Só que me retorna somente aqueles que POSSUEM carro, mas não aquelas que NÃO POSSUEM carro.
Existe uma maneira de matar isso dentro de uma só query (nada de programação PHP, ASP, etc.) que contabilize também os que não possuem carro?
Obrigado pela atenção!
Link to comment
Share on other sites
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.