2016-09-01 1 views
0

私は2つのテーブル:tire_lifeとデータベース上のトランザクションを持っています。Postgresの戻り値のない行を使用する設定値

サブクエリが値を返すときはうまく動作しますが、行が返されないときにはtire_lifeテーブルは更新されません。

これは私が実行しているクエリです。

UPDATE tire_life as life SET covered_distance = initial_durability + transactions.durability 
FROM (SELECT tire_life_id, SUM(tire_covered_distance) as durability 
      FROM transaction WHERE tire_life_id = 24 AND deleted_at IS NULL 
     GROUP BY (tire_life_id)) as transactions 
WHERE life.id = 24 

私はまったく成功しCOALESCE()関数を使用しようとしました。

答えて

1

副問合せにcoalesce()を使用できるのは、単一列を戻す場合のみです。あなたはサブクエリ外tire_life_idを使用していないとして、あなたはそれをスキップすることができます

UPDATE tire_life as life 
SET covered_distance = initial_durability + transactions.durability 
FROM (
    SELECT coalesce(
     (
      SELECT SUM(tire_covered_distance) 
      FROM transaction 
      WHERE tire_life_id = 24 AND deleted_at IS NULL 
      GROUP BY (tire_life_id) 
     ), 0) as durability 
    ) as transactions 
WHERE life.id = 24; 

を私はあなたがサブクエリが行を返さない場合durabilityとして0を取得したいと思います。

+0

ありがとうございました。 –

関連する問題