对于开票应用程序,我正在对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