rtamura Postado Dezembro 14, 2011 Denunciar Share Postado Dezembro 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Dezembro 14, 2011 Denunciar Share Postado Dezembro 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rtamura Postado Dezembro 14, 2011 Autor Denunciar Share Postado Dezembro 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Dezembro 14, 2011 Denunciar Share Postado Dezembro 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" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rtamura Postado Dezembro 14, 2011 Autor Denunciar Share Postado Dezembro 14, 2011 Vou dar uma estudada nesta cláusula para ver maiores detalhes.Obrigado pela orientação! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
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 para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.