1

テーブルに基づいて欠落している暦週を出力する SQL ステートメントを探しています。ここに短い例があります。MySQLを使用しています。関係のない列はすべて削除しました。

+------+--------------+
| Year | CalendarWeek |
+------+--------------+
| 2012 |            1 |
| 2012 |            5 |
| 2012 |            8 |
| 2012 |            9 |
| 2012 |           51 |
| 2013 |            2 |
+------+--------------+

私が取得しようとしているもの:

+------+--------------+
| Year | CalendarWeek |
+------+--------------+
| 2012 |            2 |
| 2012 |            3 |
| 2012 |            4 |
| 2012 |            6 |
| 2012 |            7 |
| 2012 |           10 |
|  ... |          ... |
| 2012 |           50 |
| 2012 |           52 |
| 2013 |            1 |
+------+--------------+

出力を短くするためにドットを追加しました。

さらなる背景:各行の列は、Java のいくつかのロジックを介して計算されます。新しい行を作成する場合、たとえば現在の暦週について、ギャップを埋める必要があるかどうかを確認する必要があります。その単純なルーチン。前の週の行はありますか? はい?これで完了です。それ以外の場合は、前の週の値を計算して挿入し、その前の週を確認します。プログラム全体で唯一の do-while-loop。

複数のギャップがあるテーブルから開始すると、これは明らかに失敗します。この場合、毎年すべての暦週を実行し、欠落している行をチェックする必要があります。時間がかかります。

tl;drショートカットを使用して、データベースへのラウンドトリップを削減しようとしています。

4

0 に答える 0