具有重复项的数组的值之和

时间:2014-05-14 11:49:32

标签: php mysql sum

尝试从查询中添加值的总和,但不知道如何在列表中找到唯一值时添加所有值,但是应该添加所有值。

例如 第11项的价格是1英镑 第35项的价格是2英镑

我试图增加11和35和35的值,即(£1 +£2 +£2)以获得5英镑的价值

我正在使用的查询明显不合适,因为它返回3英镑所以它只添加附加到唯一项目的唯一值

SELECT sum(price) FROM prices where item_id IN(11,35,35)

任何非常感谢的帮助

2 个答案:

答案 0 :(得分:1)

您需要在表格上强制进行笛卡尔联接,您可以这样做:

select
    sum(yt.price) as TotalPrice
from
    yourTable yt
        join (
            select
                11 as ID
            from dual
            union all
            select
                35 as ID
            from dual
            union all
            select
                35 as ID
            from dual
        ) sel
            on yt.ID=sel.ID

您创建一个子查询,该子查询具有所需ID的多个记录,并将其连接到要从中提取数据的实际表。

您可以做的另一件事就是撤回单个物品价格并在数组/对象中对其进行排序,您可以在其中进行数学计算以更详细的方式获取价格。

你可以用一个数组完成另一件事(或者你要存储你想要计算其价格的ID)将在外部查询中进行可变数量的联合 - 类似于什么是以上,但看起来会有很大不同:

select
    sum(sel.price)
from
    (
        select price from yourTable where ID=11
        union all
        select price from yourTable where ID=35
        union all
        select price from yourTable where ID=35
    ) sel

它几乎相同,但根据您提入查询的其他列,可能更适合。

答案 1 :(得分:0)

您需要使用join执行此操作。 where子句不会增加行数。所以:

select sum(price)
from (select 11 as item union all select 35 union all select 35
     ) i join
     prices p
     on i.item = p.item;