1

我必须为学校项目创建的 postgreSQL 视图有一点问题。

我有五个名为:

  • 输入(inputId,distributorId,日期)
  • Inputline(InputId, ObjectId, 数量)
  • 输出(outputId,clientId,日期)
  • 输出线(输出标识,对象标识,数量)
  • 库存(ObjectId,数量)

现在我需要一个视图来显示按时间顺序进行的更改(每个 objectId),如下所示:

| Date       | type   | ammount In | ammount out |
+------------+--------+------------+-------------+
| 10-10-2007 | Input  | 10         |             |
| 11-10-2007 | Output |            | 5           |
| 12-10-2007 | Input  | 20         |             |

我完全不知道如何做到这一点,所以我非常感谢你的帮助。如果需要更多详细信息,请随时询问 =)

4

3 回答 3

0

视图更多地是来自其他表的数据的组合,而不是新信息。我建议使用新表来显示更改,然后使用触发器,或者如果您通过存储过程为表插入/更新/等数据,那么只需通过该过程将插入添加到更改表中。触发器放置在您的表上 例如,输出行表上的“插入”触发器在另一个表(更改表)上执行操作(在本例中为插入)。

于 2012-06-04T15:37:57.323 回答
0
select "date", type, "amount in", "amount out"
from (
    select 'output' as "type", "date", amount as "amount out", 0 as "amount in"
    from outputline
    union all
    select 'input' as "type", "date", 0 as "amount out", amount as "amount in"
    from inputline
) s
order by "date"
于 2012-06-04T15:49:42.660 回答
0
SELECT o.date, 'Output' AS type, ol.amount AS amount_out, NULL AS amount_in
FROM   outputline ol
JOIN   output     o USING (outputid)

UNION ALL
SELECT i.date, 'Input', NULL, il.amount
FROM   inputline il
JOIN   input     i USING (inputid)
ORDER  BY date, type;

or之后的ORDER BY子句适用于整个结果集。UNIONUNION ALL

type另外订购以打破与日期的联系,以便输入先于输出。

于 2012-06-04T16:24:09.353 回答