Consulta no MySQL - Buscando menor Preço

15/05/2017

0

Boa tarde, tudo bem?

Estou tendo dificuldades em criar uma consulta no banco de dados MySQL para buscar dígamos vários produtos ao mesmo tempo com seus respectivos menores preços. Por exemplo, quero consultar os produtos Pro1 e Pro2 com os códigos 5555 e 6666, já procurando qual deles tem o menor preço.

TABELA: produtos
id ---- nome ---- codigo
1 ----- Pro1 ----- 5555
2 ----- Pro2 ----- 6666
3 ----- Pro3 ----- 7777

TABELA: lojas
id ---- nome
1 ----- Dália
2 ----- Desco
3 ----- Bergamaschi

TABELA: produtos_precos
id ---- id_produto ---- preco ---- id_loja
1 ---------- 1 ----------- 29,90 ------ 1
2 ---------- 1 ----------- 25,90 ------ 2
3 ---------- 1 ----------- 23,90 ------ 3
4 ---------- 2 ----------- 32,90 ------ 1
5 ---------- 2 ----------- 35,90 ------ 2
6 ---------- 2 ----------- 43,90 ------ 3
7 ---------- 3 ----------- 12,90 ------ 1
8 ---------- 3 ----------- 13,40 ------ 2
9 ---------- 3 ----------- 15,20 ------ 3

SELECT * FROM produtos WHERE codigo IN (5555, 6666)

O SQL acima retornaria retornaria os dois produtos dos códigos citados. A pergunta é como fazer para na mesma consulta buscar o menor preço de cada produto (vindo da tabela produtos_precos).
Rafael Casanova

Rafael Casanova

Responder

Post mais votado

15/05/2017

Boa noite Rafael.

O menor preço independente da loja?

Se for, é asim:



SELECT id_produto, MIN(preco) AS MENOR_PRECO
FROM produtos_precos
GROUP BY id_produto




Ai caso você queira apenas aqueles 2 produtos, você pode fazer um INNER jJOIN com a tabela produtos, e usar o seu where

WHERE codigo IN (5555, 6666)


Espero ter ajudado.

Grande abraço

Luiz Santos

Luiz Santos
Responder

Mais Posts

16/05/2017

Rafael Casanova

Poxa, ajudou muito, obrigado Luiz Fernando, o engraçado que havia tentado fazer algo semelhante, só que não funcionava.

Acho que estava cometendo algum erro de sintaxe =D
Responder

16/05/2017

Luiz Santos

Rafael.
É normal.
As vezes ficamos tão bitolados no código que é preciso alguém de fora pra mostrar um erro qualquer que estamos deixando passar.
Acontece com todo mundo, independente da linguagem.

Grande abs
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar