Mysql中的“Equity”系统

时间:2013-08-11 02:33:40

标签: php mysql mysqli

所以我有这个游戏,我正在创建一个虚拟的“股权”系统,比如说玩家A为一个价值20美元(购买100%)的房产支付50美元,然后玩家B出现并支付10美元(现在将玩家A置于83.3333%而玩家B置于16.6666%)我如何计算A玩家的数量(因为他获得100%的筹码直到玩家B买入一股以及83.3333%)。

我有一个“买”的MySql数据库架构以及日期列,购买时的属性值,当然还有玩家支付的$,只是考虑如何编写查询来获取值让我的大脑受伤所以我会很感激任何指针。

让一切变得非常棘手的是,每个玩家都可以购买另一部分房产,这使得这个过程变得更加困难。

1 个答案:

答案 0 :(得分:0)

如果您希望自动完成此操作,您需要的是触发器,但是目前我将专注于实际查询。因此,让我们假设您有两个字段,一个表示持有的值,另一个表示持有百分比(其他字段,根据业务需求可以存在),但让我向您展示仅使用这两个字段的示例

Person | Value | Percentage 

让我们进一步假设,根据你的例子,A​​购买价值50美元的股票

您需要通过使用第二个子查询来调用(在插入触发器可能没问题或单独调用之后),该查询使用不那么推荐的方法基于其自己的聚合值来更新表。但是,如果你想干净,那么你需要更新两个表,一个将保存份额的值,第二个将保持百分比。

CREATE TABLE SHARES (NAME VARCHAR(20), VALUE INTEGER, PERCENTAGE FLOAT);

INSERT INTO SHARES (NAME,VALUE) VALUES ('A',50);

UPDATE SHARES SET PERCENTAGE = VALUE/(SELECT TOTAL_VALUE FROM
                                      (SELECT SUM(VALUE) AS TOTAL_VALUE
                                       FROM SHARES) AS DUMMY)*100;

INSERT INTO SHARES (NAME,VALUE) VALUES ('B',10);

UPDATE SHARES SET PERCENTAGE = VALUE/(SELECT TOTAL_VALUE FROM
                                      (SELECT SUM(VALUE) AS TOTAL_VALUE
                                       FROM SHARES) AS DUMMY)*100;

小提琴在http://www.sqlfiddle.com/#!2/cec38/1/0发现希望这会有所帮助。