Sql Oracle Apex日历订购记录

Sql Oracle Apex日历订购记录,sql,oracle,oracle-apex,Sql,Oracle,Oracle Apex,我正在为流程实现预订工具。你们可以使用库存——若你们想预订一天的上午和下午时段,那个么这一天的时段已经用完了。然后,当显示日历时,它会显示所有现有预订,例如,显示该房间在特定时间段内不可用 我遇到的困难是,返回的条目并没有按顺序显示,所以在“am”槽之后是“PM”槽。这一切看起来都很随机,可能会让最终用户感到困惑 SELECT * FROM ( select query to select room 1 where slot is AM UNION ALL query to selec

我正在为流程实现预订工具。你们可以使用库存——若你们想预订一天的上午和下午时段,那个么这一天的时段已经用完了。然后,当显示日历时,它会显示所有现有预订,例如,显示该房间在特定时间段内不可用

我遇到的困难是,返回的条目并没有按顺序显示,所以在“am”槽之后是“PM”槽。这一切看起来都很随机,可能会让最终用户感到困惑

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语句造成的


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

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

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

在对解决这个问题失去希望后,我意外地发现了这个问题的解决方案。基本上,Apex日历依赖于日期列,但如果一天分配了多条记录,则它会以随机顺序显示这些记录。有些人建议添加另一个列,以便在其中添加一些顺序,但是这会产生另一层不必要的复杂性。解决方案:

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

通过将rownum参数添加到日期列,Apex可以检测到记录之间的差异,然后突然间,一切都按正常顺序运行

阿伦:谢谢你的回答。不幸的是,这种方法不起作用。@Lomo_效应当使用这种解决方案时,到底还有什么问题?或者您在实现它时有困难吗?很抱歉,我应该详细说明一下。我主要关心的是按顺序(AM、AM、PM、PM)检索记录。上面的查询确实有效,但它不能按正确的顺序对结果进行排序。这不是纯粹的SQL问题,因为这个解决方案需要通过APEX日历工具来实现。@Lomo_效应,仍然不清楚为什么您认为这个解决方案不起作用。“订单(上午、上午、下午、下午)”没有意义。也许您应该发布示例数据、获得的结果、使用的确切查询以及预期结果。