Jump to content


Photo

Inner Join Sem Repetir Campos


  • Faça o login para participar
2 replies to this topic

#1 anderson farias

anderson farias

    Normal

  • Usuários
  • 62 posts
  • Sexo:Masculino
  • Localidade:Bahia
  • Interesses:Ajudar, trabalhar e viver...

Posted 17/07/2010, 00:10

Olá Pessoal ,

Estou com uma grande dificuldade em uma consulta, é o seguinte:

Tenho as tabelas:

Pedido
Campos: id | codigo_venda | cliente | Valor_total | ...
Descrição: Tabela que guarda o pedido com valor total da venda para fins financeiro


Venda
Campos: id | codigo_venda | cliente | produto | un_medida | preco_unitario | qtd | ...
Descrição: Tabela que guarda informações dos prdutos da venda para fins de detalhamento.

Cliente
Campos: id | nome | endereço | …
Descrição: Tabela que armazena os dados do cliente


Na minha aplicação(em php) tem uma parte que o cliente poderá selecionar mais de um pedido, na busca tenho que trazer a seguinte informação:

- O nome do produto não pode se repetir
- A quantidade dos produtos iguais precisa ser somado
- Caso o produto igual tenha valores diferentes deve-se aplicar a média ponderada do preço unitário



Tentei isso, sei q não é o ideal mais pelo menos estou me esforçando para apreender a trabalhar com novas consultas.

SELECT pedido_nf2.id,pedido_nf2.codigo_venda,pedido_nf2.cliente,pedido_nf2.data_emissao,pedido_nf2.data_saida,
		pedido_nf2.hora_saida,pedido_nf2.valor_total,venda.codigo_venda,venda.produto,venda.qtd,
		venda.preco_unitario,venda.un_medida,un_medida.id,un_medida.nome 
		FROM pedido_nf2 INNER JOIN venda on pedido_nf2.id = $pedido AND pedido_nf2.codigo_venda=venda.codigo_venda AND venda.fornecedor='$cliente' INNER JOIN un_medida        ON un_medida.id=venda.un_medida

Aplicação em PHP com Mysql
A variável $pedido acima é um vetor que contem o numero dos pedidos e esta dentro do laço de repetição. A consulta é realizada com sucesse mais lista todos os produtos repetidos, utilizei o DISTINCT mais não tive exito.


Alguém poderia me ajudar com essa tarefa?

Observações
Sinceramenta tenho conhecimento interemediário em Banco de Dados, no qual na maioria dos sistemas que crio é necessário instruções básicas de Insert, Delete, Select, Inner Join(Básica) e Update.
Agora surgiu essa pesquisa que esta sendo bom, pois estou pesquisando bastante e apredendo novas coisas, apenas nessa parte que estou com tal dificuldade.


Muito Grato pela atenção ,


Anderson Farias

Edição feita por: anderson farias, 17/07/2010, 00:12.


#2 Salsero

Salsero

    Normal

  • Usuários
  • 60 posts
  • Sexo:Masculino
  • Localidade:Salvador
  • Interesses:PHP e Banco de Dados

Posted 19/07/2010, 18:33

Olá Pessoal ,

Estou com uma grande dificuldade em uma consulta, é o seguinte:

Tenho as tabelas:

Pedido
Campos: id | codigo_venda | cliente | Valor_total | ...
Descrição: Tabela que guarda o pedido com valor total da venda para fins financeiro


Venda
Campos: id | codigo_venda | cliente | produto | un_medida | preco_unitario | qtd | ...
Descrição: Tabela que guarda informações dos prdutos da venda para fins de detalhamento.

Cliente
Campos: id | nome | endereço | …
Descrição: Tabela que armazena os dados do cliente


Na minha aplicação(em php) tem uma parte que o cliente poderá selecionar mais de um pedido, na busca tenho que trazer a seguinte informação:

- O nome do produto não pode se repetir
- A quantidade dos produtos iguais precisa ser somado
- Caso o produto igual tenha valores diferentes deve-se aplicar a média ponderada do preço unitário



Tentei isso, sei q não é o ideal mais pelo menos estou me esforçando para apreender a trabalhar com novas consultas.

SELECT pedido_nf2.id,pedido_nf2.codigo_venda,pedido_nf2.cliente,pedido_nf2.data_emissao,pedido_nf2.data_saida,
		pedido_nf2.hora_saida,pedido_nf2.valor_total,venda.codigo_venda,venda.produto,venda.qtd,
		venda.preco_unitario,venda.un_medida,un_medida.id,un_medida.nome 
		FROM pedido_nf2 INNER JOIN venda on pedido_nf2.id = $pedido AND pedido_nf2.codigo_venda=venda.codigo_venda AND venda.fornecedor='$cliente' INNER JOIN un_medida        ON un_medida.id=venda.un_medida

Aplicação em PHP com Mysql
A variável $pedido acima é um vetor que contem o numero dos pedidos e esta dentro do laço de repetição. A consulta é realizada com sucesse mais lista todos os produtos repetidos, utilizei o DISTINCT mais não tive exito.


Alguém poderia me ajudar com essa tarefa?

Observações
Sinceramenta tenho conhecimento interemediário em Banco de Dados, no qual na maioria dos sistemas que crio é necessário instruções básicas de Insert, Delete, Select, Inner Join(Básica) e Update.
Agora surgiu essa pesquisa que esta sendo bom, pois estou pesquisando bastante e apredendo novas coisas, apenas nessa parte que estou com tal dificuldade.


Muito Grato pela atenção ,


Anderson Farias



eh só usar a sintex do group by se necessario use o group by com having
Vagner Fonseca
Programador PHP e BD
Posted Image Meu post lhe ajudou? Reputar/votar é uma das formas de agradecer.

#3 ninhovip

ninhovip

    Interspire.com.br

  • Banidos
  • PipPipPip
  • 212 posts
  • Sexo:Masculino
  • Localidade:Recife - PE
  • Interesses:PHP, MySQL, Web 2.0, jQuery, Flash/AS, Photoshop

Posted 06/08/2010, 18:54

tenta usar o LEFT JOIN
Interspire Brasil
Tudo p/ Shopping Cart & E-mail Marketer BR
(usehost) Servidores VPS Cloud Computing
SMTP Dedicado | CPanel/WHM | WHMCS4
usehost.com.br | executtivo@msn.com | @filipemtro




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq