2014-06-25 62 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