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

Consulta com duas tabelas


rtamura

Pergunta

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

  • 0
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

Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigado Denis! :D

Saberia me dizer, em relação a desempenho, entre utilizar

SELECT 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_veiculos

Ou será que é a mesma coisa?

Link para o comentário
Compartilhar em outros sites

  • 0
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"

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

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