1

プロセスの予約ツールを実装しています。使用できる在庫があります - ある日のプロセスを予約したい場合、その日の午前と午後のスロットが使い果たされています。次に、カレンダーが表示されているときに、たとえば、この部屋が特定の期間に利用できないことを示すすべての既存の予約が表示されます。

私が抱えている問題は、順番どおりに表示されていないエントリが返されたため、「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ステートメントが原因だと思います。

この問題を解決する最善の方法は何ですか?

4

2 に答える 2

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
于 2013-01-22T10:00:50.910 に答える
1

この問題を克服する希望を失った後、私は偶然に問題の解決策を見つけました。基本的に Apex カレンダーは日付列に依存しますが、1 日に複数のレコードが割り当てられている場合は、それらをランダムな順序で表示します。一部の人々は、別の列を追加して順序付けを追加することを提案しましたが、これにより、必要ではない別の複雑なレイヤーが生成されます。解決:

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

日付列にrownumパラメータを追加することで、Apexはレコード間の違いを拾うことができ、突然すべてが通常の順序であるはずのように機能します。

于 2013-02-05T11:27:15.040 に答える