【发布时间】:2014-04-17 06:35:44
【问题描述】:
如何将以下算法编码为 SQL 查询(a 和 b 和 c 是我数据库中的表)
for all a:
case c.column=0
set a.columnname+=b.column1*b.column2
case c.column=1
...
earlier i solved a similar problem by:
UPDATE a
set
a.column= (select SUM(column1) from b where a.column2=b.column2)
但由于 in 是对两列的乘积求和,我认为我不能这样做。 真正的问题还在于 a 与 c 的一对多关系。
关系:
一对多 b.
b 一对一 c
假设 A 是公司数据表,B 是员工数据表,C 告诉我们员工是男性还是女性(只是一个例子,并不是我的问题)。现在我需要计算每个公司给每个员工的总工资,并将其存储在公司表的一个字段中。可以说我根据员工的性别以不同的方式计算这个。现在又有数百家公司,每家公司都有数千名员工。
【问题讨论】:
-
您可以查看游标,但使用错误,它们很烂。为什么你需要在 sql 中循环?我过去曾多次想过同样的问题,并且通常已经向我展示了一种使用单行选择或更新语句的方法。
-
您的表是如何相互关联的?剩下的逻辑是什么?有统一性吗?
-
您的表格是否相互关联?你能用简单的英语而不是伪代码说明你想要做什么吗?
-
@user2197558 从过程语言到基于集合的语言的转换几乎从来没有那么简单。
标签: sql