2014-06-25 42 views
0

我运行此查询:获得最好的优惠

SELECT p.id, p.descricao, p_s.preco as antigo, pr.preco as novo 
FROM produtos_supermercados p_s 
JOIN produtos p 
ON(p_s.id_produto = p.id) 
JOIN promocoes pr 
ON(pr.id_produto = p.id) 

,我得到这个结果:

id descricao     antigo   novo 
16 Cookies Diet Jasmine   R$3,40  R$1,50 
17 Creme de Leite Nestle 300g R$1,99  R$1,00 
48 Johnson Baby Shampoo 200ml R$4,00  R$2,00 
49 Televisão LCD LG    R$999,90  R$2,00 

我想要得到最好的两个报价,其中antigo是正常价格和novo是受损价格。 因此,在这种情况下,我想运行一个查询,首先返回Televisão LCD LG,因为是最好的报价(原始价格为999美元,现在只需要2美元),而且我也希望获得第二个报价。

但我需要小心,因为最好的报价不是原价格和报价之间的差额更大的报价。 例如,如果产品A花费$ 1000,而现在它是$ 900以及将B $ 5,现在是$ 1,我有这样的:

A-> $1000 - $900 = $100 
B-> $5 - $1 = $4 

因此,在产品中的价格性差异是更大,但产品B有最好的报价! 我该怎么做?

+0

你能告诉我该怎么做吗? – ahmm95

回答

0

您需要决定如何去做,但合理的方法是使用折扣的金额。 1000美元 - > 900美元,即10%; 5美元 - > 1美元是80%。

SELECT p.id, p.descricao, p_s.preco as antigo, pr.preco as novo 
FROM produtos_supermercados p_s JOIN 
    produtos p 
    ON(p_s.id_produto = p.id) JOIN 
    promocoes pr 
    ON(pr.id_produto = p.id) 
ORDER BY pr.preco/p_s.preco desc; 
+0

谢谢,它的工作! – ahmm95