Adriana Araujo Postado Setembro 24, 2014 Denunciar Share Postado Setembro 24, 2014 Olá pessoal, Preciso de uma luz. Preciso fazer um select de comparação de preço, dentro das seguintes condições: 1) O usuário compõe uma lista de itens, vários itens. 2) O sistema fará uma comparação do valor total desta lista com menor valor. 3) o que tem que aparecer para o usuário é o nome do fornecedor e total com menor valor da lista. As tabelas são as seguintes: tb_lista_itens: É onde gravar a lista composta pelo o usuário. Campos da tabela: "id_lista_produto" "id_lista" "id_produto" "quantidade" tb_produtos_empresa: É onde está listados, os produtos, o id da empresa e os respectivos preços dos produtos. Campos da tabela: "id_produto_mercado" "id_empresa" "id_produto" "produto_emp_preco" "data_atualizado" tb_empresa: É onde está as informações do fornecedor, nome, endereço etc. Campos da tabela: "id_empresa" "empresa_nome" "cnpj" "insc_est" "responsavel_nome" "responsavel_email" "empresa_telefone" "endereco" "numero" "complemento" "cep" "bairro" "cidade" "longitude" "latitude" "status" Então ficaria da seguinte forma: ----------------------------- Fornecerdor - Total da lista ----------------------------- Extra - 50,00 ----------------------------- Fiz o seguinte select: SELECT tb_empresa.empresa_nome, sum(tb_produtos_empresa.produto_emp_preco) FROM tb_produtos_empresa INNER JOIN tb_lista_itens ON tb_produtos_empresa.id_produto = tb_lista_itens.id_produto INNER JOIN tb_empresa ON tb_produtos_empresa.id_empresa = tb_empresa.id_empresa WHERE (select MIN(tb_produtos_empresa.produto_emp_preco) from tb_produtos_empresa INNER JOIN tb_lista_itens ON tb_produtos_empresa.id_produto = tb_lista_itens.id_produto ) Porém, esse select só está trazendo o nome do primeiro fornecedor e o total de todos os itens de todo mundo! É isso, não tenho o conhecimento para complementar o que está faltando. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Setembro 24, 2014 Denunciar Share Postado Setembro 24, 2014 Quando eu seleciono elementos da tabela abaixotb_lista_itens: É onde gravar a lista composta pelo o usuário.Campos da tabela: "id_lista_produto" "id_lista" "id_produto" "quantidade"Com quais atributos eu identifico a empresa e o produto para relacionar com a tabela abaixo?tb_produtos_empresa: É onde está listados, os produtos, o id da empresa e os respectivos preços dos produtos.Campos da tabela: "id_produto_mercado" "id_empresa" "id_produto" "produto_emp_preco" "data_atualizado"Sem esta conexão é impossível saber qual empresa possui o menor total de preço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Adriana Araujo Postado Setembro 24, 2014 Autor Denunciar Share Postado Setembro 24, 2014 (editado) Quando eu seleciono elementos da tabela abaixo tb_lista_itens: É onde gravar a lista composta pelo o usuário. Campos da tabela: "id_lista_produto" "id_lista" "id_produto" "quantidade" Com quais atributos eu identifico a empresa e o produto para relacionar com a tabela abaixo? tb_produtos_empresa: É onde está listados, os produtos, o id da empresa e os respectivos preços dos produtos. Campos da tabela: "id_produto_mercado" "id_empresa" "id_produto" "produto_emp_preco" "data_atualizado" Sem esta conexão é impossível saber qual empresa possui o menor total de preço. Olá Denis! Muito obrigada pela atenção! Realmente, não existe tal atributo. Exceto o Id_produto, por isso tentei uni-los pelo inner join, por que a tabela tb_lista_itens foi feita com a intenção de armazenar apenas os itens do usuário, colocando um atributo para identificar a empresa não duplicaria ,talvez, na tela os itens de produtos para o usuário? Nossa realmente fiquei confusa rsrsrs.. Obrigada! Editado Setembro 24, 2014 por Adriana Araujo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Setembro 25, 2014 Denunciar Share Postado Setembro 25, 2014 Ok. Entendi.1) O select abaixo separará os produtos de uma listaselect id_produto, quantidade from tb_lista_itens where id_lista = ??2) O select abaixo separará e somará os preços dos produtos por fornecedorselect pe.id_empresa, pe.id_produto, sum(pe.produto_emp_preco * li.quantidade) as vltotalitem from tb_produtos_empresa pe inner join tb_lista_itens li on li.id_produto = pe.id_produto where id_lista = ?? group by pe.id_empresa, pe.id_produto3)Como você só precisa dos totais de cada empresa, pode retirar o pe.id_produto do order by. Ficando assim:select pe.id_empresa, pe.id_produto, sum(pe.produto_emp_preco * li.quantidade) as vltotalitem from tb_produtos_empresa pe inner join tb_lista_itens li on li.id_produto = pe.id_produto where id_lista = ?? group by pe.id_empresa4) Agora vamos ao que interessa. Saber quem é o menor valorselect mv.id_empresa, e.empresa_nome, min(mv.vltotaempresa) as menor valor from tb_empresa e INNER JOIN (select pe.id_empresa, pe.id_produto, sum(pe.produto_emp_preco * li.quantidade) as vltotaempresa from tb_produtos_empresa pe inner join tb_lista_itens li on li.id_produto = pe.id_produto where id_lista = ?? group by pe.id_empresa) mv on mv.id_empresa = e.id_empresaPor favor teste tudo pois fiz sem testar nada. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Adriana Araujo
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
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.