テーブルに基づいて欠落している暦週を出力する 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ショートカットを使用して、データベースへのラウンドトリップを削減しようとしています。