2012-02-08 66 views
0

如何使用計算列排序的結果進行查詢? (I不能預先計算在其他列中的結果來進行排序!)按GAE數據存儲區中的計算列排序

實施例:

在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}}。通過這種方式,我無法預先計算結果進行排序,因爲變量隨時都可能發生變化。

有這樣的問題的優雅解決方案?

坦克!

+0

你不能;數據存儲不支持這一點。 (雖然你可以預先計算'價格*數量';當然'current_tax'的值不會影響排序順序) – geoffspear 2012-02-08 12:59:09

回答

2

正如您在documentation中看到的那樣,GQL不支持SELECT語句中的任何算術運算。

GQL是爲了方便來自SQL背景的人員,但低級數據存儲區API更像是一個索引k/v存儲區。

如果current_tax總是應用於price * qty它不會無論如何修改訂貨的積極因素,所以我會建議存儲price * qty作爲一個新的產品領域,total_price併爲它創建一個DESC索引。

+0

我認爲我的例子不是很好。我將在github上調查併發布我的項目。這樣我可以解釋這個問題。 – 2012-02-08 19:15:35

+0

我的問題更像這樣:http://code.google.com/intl/zh-CN/appengine/articles/overheard.html – 2012-02-09 11:53:09