對於開票應用程序,我正在對PHB進行工作,決定發票上列出的零件需要以非常特殊的順序進行。如果可能的話,我想用一個單獨的sql語句完成此操作。MS Access複雜訂單
本質上,爲了需要是這樣
- 的最昂貴的部分(但僅當有在$ 0中列出的其他部分)
- 爲$ 0
- 所有其它部件中列出的所有部件(或通過PART_ID的順序列出所有部分)
- 用( 「MISC-30」 的一個PART_ID所有份數, 「MISC-31」, 「TEMP」)
- 具有負數量的所有份數[返回]
還有的將需要加入,但是這必須由代碼
處理意見混雜到目前爲止,我有:
SELECT *
FROM order_part
WHERE ordid = 1234
ORDER BY qty > 0, part_id NOT IN("MISC-30","MISC-31","TEMP"), part_id
但我無法弄清楚如何合併前兩條規則
這是價格最貴的部分還是數量? – JeffO 2009-11-04 21:18:03
幾點:1)SELECT *是不好的做法; 2)在SELECT子句中'揭露'排序順序是一種很好的做法;在SQL中,您可以在ORDER BY子句中使用關聯名稱而不是完整表達式,但可悲的是Access數據庫引擎SQL並不是真正的SQL,儘管您可以使用子查詢來解決此問題,但遺憾的是Access數據庫引擎並未優化好:( – onedaywhen 2009-11-05 09:15:44
這是一個僞示例,實際查詢時間相當長 – 2009-11-05 15:49:12