これは複雑な問題のように思えますが、アイデアを明確にし、シナリオを説明するために最善を尽くします。基本的に、2 つのテーブルを結合して、1 つのクエリの結果セットとして返す必要があります。1 つのテーブルを特定の順序で別のテーブルにマージする必要があります。
テーブル 1 をArticles、テーブル 2 をFeaturesとします。両方のテーブルには、一意の番号を持つIDフィールドがあります。Articlesには、最初にレコードを降順でソートするために使用される日付フィールドがあります。Featuresテーブルには、最初にレコードをソートするために使用されるDeltaフィールドがあります。Featuresテーブルの一部のレコードはプレースホルダーであり、最終的なセットに含めることを意図していません。それらの唯一の目的は、並べ替え順序に影響を与えることです。各レコードのDeltaフィールドには、これらのレコードの並べ替えに使用される 1 ~ X の一意の値があります。Skipという別のフィールドの値は1です。2 つのテーブルをマージするときに削除する必要がある場合。ここでも、スキップされたレコードの唯一の目的は、 Featuresテーブルでの最初の並べ替え中にスペースを占有することです。それらは不要ですが、存在し、削除することはできません。
注意が必要なのは、両方のテーブルの結果をマージするときに、Features テーブルのスキップされていないレコードを、Featuresテーブルに表示される順序でArticlesテーブルの結果に挿入する必要があることです。
したがって、Featuresテーブルに A ~ F の 6 つのレコードがあり、order フィールドの範囲が 1 ~ 6 であるとします。レコード A、B、D、E のSkipフィールドの値はすべて 1です。つまり、レコード C と F のみに関心があることを意味します。どちらも最終レコード セットの 3 番目と 6 番目にそれぞれ挿入する必要があります。
Articlesテーブルの場合、レコードは次のようになります。
+----+------------+
| id | date |
+----+------------+
| 1 | 9999999999 |
+----+------------+
| 2 | 9999999998 |
+----+------------+
| 3 | 9999999997 |
+----+------------+
| 4 | 9999999996 |
+----+------------+
| 5 | 9999999995 |
+----+------------+
| 6 | 9999999994 |
+----+------------+
| 7 | 9999999993 |
+----+------------+
| 8 | 9999999992 |
+----+------------+
| 9 | 9999999991 |
+----+------------+
| 10 | 9999999990 |
+----+------------+
Featuresテーブルは次のようになります。
+----+------+-------+------+
| id | name | delta | skip |
+----+------+-------+------+
| 11 | A | 1 | 1 |
+----+------+-------+------+
| 12 | B | 2 | 1 |
+----+------+-------+------+
| 13 | C | 3 | 0 |
+----+------+-------+------+
| 14 | D | 4 | 1 |
+----+------+-------+------+
| 15 | E | 5 | 1 |
+----+------+-------+------+
| 16 | F | 6 | 0 |
+----+------+-------+------+
結果は次のようになります (私の目標を達成するために必要な追加フィールドは含まれていません)。
+----+
| id |
+----+
| 1 |
+----+
| 2 |
+----+
| 13 | (record from the Features table in the third position)
+----+
| 3 |
+----+
| 4 |
+----+
| 16 | (record from the Features table in the sixth position)
+----+
| 5 |
+----+
| 6 |
+----+
| 7 |
+----+
| 8 |
+----+
| 9 |
+----+
| 10 |
+----+
私の説明が理にかなっていることを願っています。何か案は?
ありがとう、ハウィー