請幫助我構建PostgreSQL查詢。 有2個表:產品(編號,名稱)和價格(ID,PRODUCT_ID,價格類型,那一刻,值)使用JOIN構建SQL查詢並限制
時刻 - 時間戳,可以在過去或未來
假設價格類型只有兩個選項:零售或購買
但是,一個產品可能有許多不同時刻的零售價格。
我需要選擇所有產品的實際零售和採購價格,其中時間比現在少。
這是我能做到
SELECT
products.id,
products.title_translations AS title,
retail_prices.moment AS ret_moment,
pur_prices.value AS purchase,
retail_prices.value AS retail
FROM products
LEFT OUTER JOIN prices AS pur_prices ON products.id=pur_prices.product_id AND pur_prices.price_type='purchase' AND pur_prices.moment<current_timestamp
LEFT OUTER JOIN prices AS retail_prices ON products.id=retail_prices.product_id AND retail_prices.price_type='retail' AND retail_prices.moment<current_timestamp
ORDER BY products.id;
它的工作原理,但返回 產品符合所有的價格,但我只需要最後的價格(通過時刻)。
你的意思是說,現在的價格更近了嗎? – scaisEdge
所以零售和採購價格應該在同一行,但可能有不同的「時刻」是正確的? – xQbert
是的,在結果時刻沒有問題 – greenif