是否可以在mysql查询中创建和使用“虚拟”表?

时间:2011-07-31 16:24:13

标签: mysql database

我有购物车,物品作为数组存储在会话中。数组键表示项的id,数组值表示项的数量。 array([1]=>1, [2]=>1);

我想计算总价。是否有可能使用一个mysql查询?

例如:

SELECT SUM(c.count * i.price) FROM (--virtual table--) c 
                                        LEFT JOIN item i ON i.id=c.id;

3 个答案:

答案 0 :(得分:1)

我知道你想要这个:

SELECT 1 AS product_id, 1 AS quantity
UNION ALL
SELECT 2, 1
UNION ALL
SELECT 3, 100
...

在任何情况下,执行其中一项看起来不那么尴尬:

  • 从数据库中检索价格
  • 将购物车存储在数据库中

这样你就可以在一个地方完成所有计算。

答案 1 :(得分:0)

您可能指的是Viewssubqueries - 如果是,那么您是对的。

答案 2 :(得分:0)

不可能,因为数据在会话中 (除非您想在数据库中写入会话数据)
我可以建议这种方法

SELECT i.id, i.price 
FROM item i 
WHERE i.id in (array.keys)

假设结果放在集合中,
itemResult成为集合 然后迭代

var total = 0
for(var item : itemResult)
  total += item.price * array[i.id]

total将包含使用此Pseudocode的总和