我正在为使用PostgreSQL数据库的项目添加新功能。
数据库中有一个名为brew_sessions
的表 - 它有一个名为condition_date
的列。
brew_sessions
通过recipes
与brew_sessions.recipe_id = recipes.id
表格相关联。然后将recipes
连接到另一个名为recipe_fermentation_steps
到recipes.id = recipe_fermentation_steps.recipe_id
的表。
当status
小于或等于计算的天数时,我想运行更新语句将brew_sessions
字段上的condition_date
字段设置为30 condition_date
值。
此值是recipe_fermentation_steps.time
的总和。
例如:
SELECT
brew_sessions.id,
SUM(recipe_fermentation_steps.time)
FROM brew_sessions
INNER JOIN recipes ON brew_sessions.recipe_id = recipes.id
INNER JOIN recipe_fermentation_steps ON recipes.id = recipe_fermentation_steps.recipe_id
GROUP BY brew_sessions.id
这导致我进入下面的查询:
UPDATE brew_sessions
SET status = 30 FROM recipes
INNER JOIN recipe_fermentation_steps ON recipes.id = recipe_fermentation_steps.recipe_id
WHERE brew_sessions.recipe_id = recipes.id
AND brew_sessions.condition_date
<= CURRENT_TIMESTAMP - INTERVAL '1 day' * SUM(recipe_fermentation_steps.time)
但是,由于您无法在WHERE
中使用聚合函数,因此无法运行。
如何正确编写以上内容?
答案 0 :(得分:1)
您可以使用子查询。像:
recipes
如果使用FK约束强制执行参照完整性,则根本不需要使用表angular.module('cookiesExample', ['ngCookies'])
.controller('ExampleController', ['$cookies', function($cookies) {
// Retrieving a cookie
this.favoriteCookie = $cookies.get('myFavorite');
if(this.favoriteCookie) {
console.log('they have been here before oooo spooky')
}
// Setting a cookie
$cookies.put('myFavorite', 'oatmeal');
}]);
。
VIEW
(或MATERIALIZED VIEW
)或类似名称。