Заказ по вычисляемому столбцу в хранилище данных GAE - PullRequest
0 голосов
/ 08 февраля 2012

Как мне сделать запрос с результатами, отсортированными по вычисляемому столбцу? (Я не могу предварительно рассчитать результат в другом столбце, чтобы сделать сортировку!)

Пример:

В таблицах СУБД, подобных этому:

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 Ответ

2 голосов
/ 08 февраля 2012

Как видно из документации , GQL не поддерживает арифметику в операторе SELECT.

GQL удобен для людей, пришедших из среды SQL, но API хранилища данных низкого уровня гораздо больше похож на индексированное хранилище k / v.

Если current_tax - это всегда положительный коэффициент, примененный к price * qty, он все равно не изменит порядок, поэтому я бы рекомендовал сохранить price * qty в качестве нового поля Product, total_price и создать для него индекс DESC. .

...