php - Mysql中的"Equity"系统

标签 php mysql mysqli

所以我在这个游戏中创建了一个虚拟的“股权”系统,假设玩家 A 支付 50 美元购买值(value) 20 美元的属性(property)(购买 100%),然后玩家 B 出现并支付 10 美元(现在假设玩家 A 为 83.3333%,玩家 B 为 16.6666%),我如何计算玩家 A 赚了多少钱(因为在玩家 B 购买份额之前他获得了 100%,此后为 83.3333%)。

我有一个“购买”的 MySql 数据库模式以及日期列、购买时的属性(property)值(value),当然还有玩家支付的美元,只是想着如何编写查询来获取这些值让我的大脑很受伤,所以如有任何指点,我将不胜感激。

让一切变得非常棘手的是,每个玩家都可以购买另一份属性(property),这使得这个过程更加困难。

最佳答案

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

Person | Value | Percentage 

让我们进一步假设,根据您的示例,A 购买了值(value) 50 美元的股票

您需要调用(在插入触发器可能正常或单独调用之后)此查询,该查询使用不太推荐的方法通过使用第二个子查询根据其自身的聚合值更新表。然而,如果你想把它做得干净,那么你需要更新两个表,一个将保存股份的值(value),第二个将保存百分比。

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 找到 fiddle 希望这会有所帮助。

关于php - Mysql中的"Equity"系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18168187/

相关文章:

php - jquery/WordPress : apply infinite scroll effect to new content loaded via AJAX

javascript - 如何使用 php 从 html 行(在表中)获取数据

javascript - JQuery 字符串比较返回不正确的值?

java - 如何使用Java为MySQL创建新用户?

mysql - 如何从 OSM 数据库正确获取位置?

php - 如何在 PDO 中将查询结果检索为数组?

php - 在 mysqli 连接中使用 mysql_* 函数

php - 为什么在 SELECT 语句中使用 RAND() 时 MySQL 返回相同的结果?

php - Laravel 文件上传验证

python - UnicodeEncodeError - 尝试使用 Flask 插入 SQL 希伯来语字母