iT邦幫忙

0

取得那些商品中的便宜到最貴範圍?(需要一個邏輯

  • 分享至 

  • xImage

如果只有「一個商品」時,我只要取 price 就可以取得真正販售價格(而非原始價格 original_price
但...假設裡面有「多個子商品」時
如圖所示,這三種都有自己的「原始價格」和「真正販售價格」
當然如果要顯示一定是要顯示「真正販售價格」
按照這個資料庫顯示
我取到的正確範圍會是 $990 - $1590 (如蝦皮作法)
我要如何讓程式知道哪一個是「這三個裡面」哪個最低?哪個最高?而優先比較 price 沒有則往後 original_price ,然後要再重新比較一次?
這是什麼邏輯...我腦筋已死

看更多先前的討論...收起先前的討論...
柯柯 iT邦新手 2 級 ‧ 2019-01-15 17:25:59 檢舉
php取出來
兩個變數存 然後 寫一個function 去比對
例如這樣:
if($row['price']) { if($max <$row['price']) $max }

SQL : https://www.yiibai.com/mysql/greatest-least.html
不是在資料庫下Min(price)就好嗎
watercool iT邦新手 5 級 ‧ 2019-01-16 08:59:04 檢舉
抓資料的時候,沒有真實售價的就取原本售價,抓出來的資料應該是array,在依照價錢排序,應該就可以了?
php與mysql均可以達到這個結果,但根據經驗以及網路上的分享,建議運算還是使用php進行,僅供參考。

參考連結:
https://www.ptt.cc/bbs/PHP/M.1351952653.A.2C7.html
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
rogeryao
iT邦超人 7 級 ‧ 2019-01-15 19:59:03
最佳解答

MYSQL :

select min(tempprice) as price_min,max(tempprice) as price_max
from (
select case when price=0 then original_price else price end as tempprice
from goods
) as TableA

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=ba7be4f093e79e6c1ebe0148f602c47d

0
alanx15a2
iT邦新手 5 級 ‧ 2019-01-19 13:36:59

先下個UPDATE SET price = original_price WHERE price = ''
剩下的就簡單了

要是要抓沒打折的也可以下 WHERE price = original_price

而且依照正常邏輯來看
一個商品不可能只有「原始價格」
而沒有「真正販售價格」
因此original_price不留空才是更合理的

我要發表回答

立即登入回答