比较来自不同表的两列并进行插入

时间:2014-11-11 14:29:01

标签: sql postgresql stored-procedures postgresql-9.1

我有两张桌子:

1.Tbl_project

fld_id fld_allocated_days
1       10
2        3
3        1
4       99

2.Tbl_project_timesheet

fld_id fld_allocated_time fld_project_id
1       8.00                1
2       8.00                1
3       8.00                2
4       8.00                3
5       8.00                2
6       8.00                2
7       8.00                1
8       8.00                4
9       8.00                1

- fld_project_id从tbl_project引用(fld_id)

我想创建一个函数,将表tbl_project中的列fld_allocated_days与来自tbl_project_timesheet的列SUM(fld_allocated_time)进行比较。

如果第一列(fld_allocated_time)低于秒(fld_allocated_days),则在表tbl_project_timesheet上插入。

其中一个函数参数是p_project_id,它将选择插入分配时间的项目。

我有一个函数可以插入已分配的时间但不检查是否超过分配的天数。

CREATE OR REPLACE FUNCTION function_add_timesheet_record( p_project_id integer, p_allocated_time numeric)
  RETURNS void AS

BEGIN

INSERT INTO tbl_project_timesheet(fld_project_id,fld_allocated_time)
    VALUES (p_project_id, p_allocated_time);
END

1 个答案:

答案 0 :(得分:1)

根据上述评论,我们假设来自1 day的{​​{1}}等于tbl_project来自8 hours。这样,获取您提供的数据项目1有6个缺失日,项目4有98个缺失日。我们将这些数据转换为秒并比较两个表中的值。

然后我们用一整天的数量填充一个数组,并将数组附加到除法的其余部分(如果有不完整的天数)。

然后我们不再使用数组,因此每行(每天)有8个小时。最后我们插入数据。

tbl_project_timesheet