Deleu 0 Denunciar post Postado Dezembro 8, 2010 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
Mário Monteiro 179 Denunciar post Postado Dezembro 9, 2010 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
Deise Vicky 1 Denunciar post Postado Dezembro 9, 2010 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
Deleu 0 Denunciar post Postado Dezembro 31, 2010 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
KUROL3 3 Denunciar post Postado Janeiro 2, 2011 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
Deleu 0 Denunciar post Postado Janeiro 2, 2011 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
Deise Vicky 1 Denunciar post Postado Janeiro 4, 2011 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