我有兩個表:PostgreSQL的COALESCE不設置默認值
tcars
id | name | car_price
----|---------------------|------------
1 |First_car_name | 1000
2 |Second_car_name | 1200
tcar_optionals
id | id_car | spec | opt_included |price
----|----------|------|-------------------------
1 | 2 |Spec1 | true | 500
2 | 2 |Spec2 | true | 100
3 | 2 |Spec3 | false | 500
4 | 2 |Spec4 | true | 0
5 | 1 |Spec5 | false | 500
6 | 1 |Spec6 | true | 0
而下面的查詢:
select t1.id, coalesce(t1.car_price, 0)+ coalesce(sum(t2.price), 0) as total_price
from tcars t1
left join tcar_optionals t2 on t2.id_car = t1.id
where t2.opt_included and t2.price>0 and t1.id=?
group by t1.id, t1.car_price
它從tcars和total_price(car_price +包含價格> 0的optionals的價格)返回id。
實施例:
爲t1.id=2
回報:
id | total_price
----|------------
2 | 1800
當我有價> 0不包括自選,例如t1.id = 1
什麼它返回出現問題:
id | total_price
----|------------
我需要的僅僅是返回t1.car_price作爲total_價格如果沒有包含可選價格> 0:
id | total_price
----|------------
1 | 1000
有人可以幫我解決這個問題嗎?
我需要q1.id_car = 1;對於返回特定車輛的價格,如果我刪除這條線路,查詢將返回我的分貝中所有車輛的價格 – Kuzuri
@Kuzuri:您可以使用'where t1.id = 1將總體結果限制爲僅一輛車' –
我知道,如果我沒有包含任選項,我需要從這個查詢中返回車的價格。 假設我有兩輛車:tcar中id = 1,id = 2,tcar_specs中id_car = 1,id_car = 2。第一輛車的價格是1000,我有兩個包括可選項(第一個價格是100和第二個150),查詢將返回1250,第二輛車的(id_car = 2)價格是900,我沒有包含可選項,應該返回900但它不,它什麼都不返回。 – Kuzuri