【发布时间】:2011-07-22 21:38:53
【问题描述】:
我正在使用 MySql 5.1。我必须数据库表用户和用户组映射。
User Table :
userid, username, points
1 user1 10
2 user2 21
3 user3 7
4 user4 44
Users_group_mapping Table :
userid, usergroupid
1 1
2 2
4 2
4 1
4 3
在分配过程中,我必须将积分分配给相应的组用户。 对于那个测试数据是这样的:
Data : $dtArr = array(
[1] => 40,
[2] => 80,
[3] => 100
)
在数组$dtArr中,key是Users_group_mapping表中的'usergroupdid'属性,value是Users表中要更新的属性点。
例如如果 usergroupid = 2 并且要给出的点数 = 40 然后从 Users_group_mapping 表中用户组“2”中的用户 - 用户 ID 为“2”和“4” - 两个用户每个都将获得 40 分。 用户 ID '4' 将仅获得通过用户组 '2' 分配的 40 点,即使该用户也属于用户组 '1' 和 '3'。
此操作的 SQL 更新查询是什么?
请指导我..!!提前谢谢。!!
【问题讨论】:
-
在“例如 if groupid = 2 and points to be given = 40 then”中,您的意思是 80 而不是 40?你试过什么了?您使用的是什么数据库(SQL Server、Oracle、mysql)?
-
您使用哪种语言?如果必须是 SQL,您的分配数据应该在 sql 表中
-
此外,如果您只想要第一次出现,您应该告诉您分配点的顺序。在 $dtArr 或 Users_group_mapping 表的顺序中?如果第二个是正确的,我建议将排序列添加到 Users_group_mapping
-
你不能只用一个更新来完成所有的事情,你应该写一个更新语句的小循环,将“已经更新”的用户ID存储在某个地方,这样你也可以检查他们是否可以获得更多积分
-
好吧,如果数据在数据库表中,您可以一次更新,但迭代方法对您来说可能更容易。我可以帮忙,但你应该回答上面的问题。
标签: sql sql-update