Oracle Apex Calendar订购记录

时间:2013-01-22 09:24:55

标签: sql oracle oracle-apex

我正在实施流程预订工具。您可以使用库存 - 如果您想预订当天的过程,那么今天的PM时段正在用完。然后,当显示日历时,它带来所有现有预订,例如显示该房间在特定时间段内不可用。

我遇到的困难是,返回的条目不按顺序显示,因此'PM'插槽后的“AM”插槽。这一切似乎都很随机,可能会让最终用户感到困惑。

SELECT * FROM 
(
select 

query to select room 1 where slot is AM

UNION ALL

query to select room 1 where slot is PM

UNION ALL

query to select room 2 ( this room can be booked only for whole day )

)

ORDER BY slot ASC

这是我使用的查询结构。它正确返回条目但不按顺序返回。我认为这是由于嵌套的select语句。

解决此问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

向内部查询添加一列,并按该列对插槽进行排序,如下所示:

SELECT * FROM 
(
   select 'AM' time_of_day,
   query to select room 1 where slot is AM
   UNION ALL
   select 'PM' time_of_day,
   query to select room 1 where slot is PM
   UNION ALL
   select 'WHOLE' time_of_day,
   query to select room 2 ( this room can be booked only for whole day )
)
ORDER BY slot ASC, time_of_day

答案 1 :(得分:1)

在失去希望过来这个问题之后,我不小心偶然发现了问题的解决方案。基本上Apex日历依赖于日期列,但如果分配给一天的多个记录,则它以随机顺序显示它们。有些人建议添加另一列来添加一些排序,但这会产生另一层复杂性,这是不必要的。解决方案:

SELECT ename, hiredate  +  rownum / 24 / 60 FROM 
(SELECT   ename, hiredate
    FROM emp
   ORDER BY ename)

通过将rownum参数添加到日期列Apex可以获取记录之间的差异,突然一切正常,因为它应该是正常的顺序。