Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Deleu

[Resolvido] SELECT 2 nomes de uma mesma tabela

Recommended Posts

Preciso de um SELECT para a seguinte função:

 

Supondo que eu tenha uma tabela pessoa com:

pessoa.id | pessoa.nome

 

 

Tabela `vendas` que tem:

vendas.id | pessoa.pessoacliente_id | pessoa.pessoavendedor_id | ...(+ informações irrelevantes no momento)

 

 

O que eu quero:

Um SELECT que me traga o nome do cliente, o nome do vendedor e as demais informações, enfim

 

SELECT vendas.blabla, pessoa.nome as vendedor, pessoa.nome as cliente FROM vendas, pessoa WHERE pessoa.id = vendas.pessoacliente_id AND pessoa.id = pessoavendedor_id

 

Tecnicamente, é isso aí que eu quero, mas lógico que a Sintaxe não é essa.

Enfim, como trazer o campo nome de uma tabela 2 vezes especificando qual nome eu quero em cada um? (entenderam isso?)

 

Existe algum SELECT pra fazer o que eu quero?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe a tabela clientes e a de vendedores?

 

Se sim bastará usar 2 INNER JOIN que resolve o caso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,deixa eu ver se entendi direito.

Você tem uma tabela vendas com dois relacionamentos com a Tabela pessoa,certo?Uma FK é o cliente,a outra é o Vendedor...

 

Se entendi direito você pode fazer um inner join da seguinte forma:

 

select   cliente.NomePessoa, vendedor.NomePessoa, v.CodigoVenda....
 from   pessoa cliente,
        pessoa vendedor,
        venda v
where   v.CodigoCliente = cliente.CodigoPessoa
  and   v.CodigoVendedor = vendedor.CodigoVendedor

 

Eu já precisei fazer isso uma vez e deu certo...

Espero que você também consiga fazer...

 

Abraços....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Preciso muito arrumar mais tempo para meus tópicos aqui >.<

 

Eu solucionei o caso usando POG pura em PHP, mas a questão é a seguinte:

 

select   pessoas.NomePessoa, pessoa.NomePessoa, v.CodigoVenda....
 from   pessoas,
        venda as v
where   pessoas.id = v.CodigoCliente
  and   pessoas.id = v.CodigoVendedor

 

Se fossem 2 tabelas diferentes, Deise Vicky, ficaria como você postou, realmente simples. Mas o problema é que o Nome da Pessoa está em uma única tabela (pessoas). Na tabela de vendas tem o id da pessoa compradora e o id da pessoa vendedora.

 

É como se no WHERE eu pedisse para pegar o nome onde o ID é 5 e pegasse o nome onde o ID é 7, por exemplo.

O problema é que nessa forma de SELECT, o banco de dados vai procurar um registro onde o ID é 5 e 7 ao mesmo tempo, e nunca vai achar (óbvio).

 

sry o flood, só quero testar a assinatura do tópico ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Preciso muito arrumar mais tempo para meus tópicos aqui >.<

 

Eu solucionei o caso usando POG pura em PHP, mas a questão é a seguinte:

 

select   pessoas.NomePessoa, pessoa.NomePessoa, v.CodigoVenda....
 from   pessoas,
        venda as v
where   pessoas.id = v.CodigoCliente
  and   pessoas.id = v.CodigoVendedor

 

Se fossem 2 tabelas diferentes, Deise Vicky, ficaria como você postou, realmente simples. Mas o problema é que o Nome da Pessoa está em uma única tabela (pessoas). Na tabela de vendas tem o id da pessoa compradora e o id da pessoa vendedora.

 

É como se no WHERE eu pedisse para pegar o nome onde o ID é 5 e pegasse o nome onde o ID é 7, por exemplo.

O problema é que nessa forma de SELECT, o banco de dados vai procurar um registro onde o ID é 5 e 7 ao mesmo tempo, e nunca vai achar (óbvio).

 

sry o flood, só quero testar a assinatura do tópico ^^

 

OLÁ TENTE FAZER ASSIM

 

select   
 (select nome from pessoa where pessoa.id = vendas.id_compradora) as pessoa_compradora,
 (select nome from pessoa where pessoa.id = vendas.id_vendedora) as pessoa_vendedora
from   
 vendas

 

Abraços

KUROLE

Compartilhar este post


Link para o post
Compartilhar em outros sites

100%! Finalmente! Só pra concluir o caso, isso é vantajoso, certo?

As vezes certas coisas parecem bem óbvias para mim e depois vejo que não estava 100% certo...

 

Ao invés de executar 1 Query, alocar espaço na memória para o resultado, depois fazer um segundo Query e concatenar os Arrays, esse múltiplo Select no banco eu alocaria espaço na memória apenas uma vez, porém com um trabalho extra ao banco. Ainda assim no banco é melhor, certo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Preciso muito arrumar mais tempo para meus tópicos aqui >.<

 

Eu solucionei o caso usando POG pura em PHP, mas a questão é a seguinte:

 

select   pessoas.NomePessoa, pessoa.NomePessoa, v.CodigoVenda....
 from   pessoas,
        venda as v
where   pessoas.id = v.CodigoCliente
  and   pessoas.id = v.CodigoVendedor

 

Se fossem 2 tabelas diferentes, Deise Vicky, ficaria como você postou, realmente simples. Mas o problema é que o Nome da Pessoa está em uma única tabela (pessoas). Na tabela de vendas tem o id da pessoa compradora e o id da pessoa vendedora.

 

É como se no WHERE eu pedisse para pegar o nome onde o ID é 5 e pegasse o nome onde o ID é 7, por exemplo.

O problema é que nessa forma de SELECT, o banco de dados vai procurar um registro onde o ID é 5 e 7 ao mesmo tempo, e nunca vai achar (óbvio).

 

sry o flood, só quero testar a assinatura do tópico ^^

 

Apesar de você já ter resolvido a sua dúvida, só queria explicar o que eu fiz na query de exemplo

select   cliente.NomePessoa, vendedor.NomePessoa, v.CodigoVenda....
 from   pessoa cliente, //alias
        pessoa vendedor, //alias
        venda v
where   v.CodigoCliente = cliente.CodigoPessoa
  and   v.CodigoVendedor = vendedor.CodigoVendedor

 

Eu estou fazendo select na tabela pessoa duas vezes, uma vez coloco o alias 'cliente' e outra 'vendedor'.

Isso dá certo porque eu utilizo assim!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.