「質問」の 2 つのテーブルがあります。質問のリスト、「QResults」 これらの質問に対するユーザーの結果。質問には、再度尋ねられるまでの時間単位のタイムアウトがあります。
Table: Questions
ID
Timeout - The amount of time before asking the question again
Table: Results
ID
Created (timestamp) - When this record was added.
Questions_ID - A FK to the Question table
サンプルデータ
Table: Questions
ID | Timeout (hrs)
--------------
1 | 1
8 | 6
15 | 1
55 | 1
Table: QResults
ID | Created | Q_ID
-------------------------------
1 | Jan 24, 2012 00:00 | 1
2 | Jan 24, 2012 06:05 | 15
3 | Jan 24, 2012 02:00 | 8
4 | Jan 24, 2012 01:00 | 1
5 | Jan 24, 2012 02:00 | 1
私が探しているのは、質問が最後に回答された時間 + タイムアウトに基づいて質問を並べ替えるクエリです。質問が回答されていない場合は、リストの一番上にプッシュする必要があります。
たとえば、上記のデータに対してクエリを実行すると、次のデータ セットが生成されます。
The result of the query I am looking for.
ID | timeout + created aka eligible
-------------------------------
55 | Jan 01, 1970 01:00 *(1) See note below*
1 | Jan 24, 2012 03:00 *(2) See note below*
8 | Jan 24, 2012 07:05
15 | Jan 24, 2012 08:00
*注: (1) id=55 の日付が最初に表示される限り、日付は関係ありません。現在、QResults がないためです。(2) これは、最新の回答作成時間 + タイムアウトを使用するため、3 時間の値になります。
これを別の言い方をしましょう。(最後の質問 + タイムアウト) の値が最も低い質問を探しています。質問が 3 回回答されている場合は、最新の質問回答時間 + タイムアウトを適格な値として使用する必要があります。これが理にかなっていることを願っています。