我正在做一个小型彩票游戏,以娱乐和提高自己。
在数据库上,我有

table(id, package, value, price, purchase_code,round)


看一个例子。有两个包,即package1和package2。
package1的值为3,package2的值为4。这意味着,如果我购买package1,则有3张正在玩的彩票,这使我有更大的机会赢得本轮比赛,因此它将3条记录插入到表,包含信息。因此,在这种情况下,我的表中包含以下记录:

id     pacakage_id    value   price     purchase_code    round
1      1              3       10        w3hjkrw          1
2      1              3       10        w3hjkrw          1
3      1              3       10        w3hjkrw          1


我想整体了解用户的花费,为此,我使用了sum(price)。
好的,但是如您所见,这三个记录是一次购买,因此sum(price)将给我结果30。

这是代码:

$income_query = mysql_query("SELECT SUM(price) FROM lottery WHERE round = '$current_round' GROUP BY code") or die(mysql_error());
while($result = mysql_fetch_array($income_query)) {
$round_money = $result['SUM(price)']." $";

最佳答案

认为您将需要执行子查询以获取包裹ID价格。可能使用distinct,尽管我只使用普通的聚合函数(MAX将在此处完成工作)。

像这样的东西:

SELECT code, SUM(package_id_price)
FROM(
    SELECT code, package_id, MAX(price) AS package_id_price
    FROM lottery
    WHERE round = '$current_round'
    GROUP BY code, package_id
) Sub1
GROUP BY code

10-06 00:34