按GAE数据存储区中的计算列排序

时间:2012-02-08 12:53:58

标签: python google-app-engine google-cloud-datastore

如何使用按计算列排序的结果进行查询? (我无法预先计算其他列中的结果来进行排序!)

示例:

在像这样的RDBMS表中:

TABLE products(
    product_id  INTEGER      NOT NULL,
    description VARCHAR(255) NOT NULL,
    price       DECIMAL(5,2) NOT NULL,
    qty         INTEGER      NOT NULL,
);

我可以执行此查询:

SELECT   product_id, (price * qty * {{current_tax}}) AS custom_calc
FROM     products
ORDER BY custom_calc DESC;

我的问题我有一个变量,在这种情况下 {{current_tax}} 。这样我就无法预先计算结果来进行排序,因为变量可以随时改变。

这样的问题有一个优雅的解决方案吗?

坦克!

1 个答案:

答案 0 :(得分:2)

正如您在documentation中所看到的,GQL不支持SELECT语句中的任何算术。

GQL可以方便来自SQL后台的人,但是低级数据存储API更像是索引的k / v存储。

如果current_tax始终是price * qty上应用的肯定因素,则无论如何都不会修改排序,因此我建议将price * qty存储为新的产品字段,{{1}并为它创建一个DESC索引。