Jump to content
Fórum Script Brasil
  • 0

Consulta com duas tabelas


rtamura

Question

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

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...