環境
写真を保存するための小さなWebアプリに取り組んでいます。写真はタイムスタンプ (撮影日) に従って並べ替えられ、うまく機能しています。データベースの簡単な外観を次に示します。
+--------------+-------------------+
| id | timestamp |
+--------------+-------------------+
| 1 | 1000000003 |
| 2 | 1000000000 |
+--------------+-------------------+
次に、写真を並べ替える機能を追加したいと思います。そして、欠点なしでそれを行う方法を見つけることはできません。
私がしたこと
カスタム オーダーを保存するために、最初にテーブルに列を追加しました。
+--------------+-------------------+-------------+
| id | timestamp | order |
+--------------+-------------------+-------------+
| 1 | 1000000003 | 1 |
| 2 | 1000000000 | 2 |
+--------------+-------------------+-------------+
最初の問題: 2 つの異なる基準に従って写真を注文することはできないと思います。
だから私はorder
列を使ってそれらを注文していますが、これだけです。列を追加したときorder
、現在の順序が維持されるように、各写真に値を指定しました。order
さんが注文したときと同じ順序で、 さんが注文した写真がありtimestamp
ます。
一部の写真を手動で並べ替えることができるようになりましたが、他の写真はその場所にとどまります。最初の問題は解決されました。
しかし、今、私は新しい写真を追加したいと思います。
2 番目の問題:追加しようとしている新しい写真がいつ撮影されたかはわかっていますが、私の写真はもはやその写真の順序で並べられていtimestamp
ません。この写真は正しく並べる必要があるため、正しいorder
値が必要です。
これが問題です:正しい order
値です。
新しい写真を処理するには、次の 2 つの方法があります。
order
他のものよりも大きな価値を与えてください。前の表では、新しい写真が表示されorder = 3
ます。タイムスタンプが考慮されていないため、これは明らかに悪い考えです。最近の写真は最後に表示されます。- タイムスタンプに従って、所属する場所に「挿入」します。同じテーブルを見て、新しい写真のタイムスタンプが だった場合、
1000000002
新しい写真は になりorder = 2
、order
次のすべての写真の は 1 ずつ増えます。
2 番目の解決策は素晴らしいように見えますが、1 つのケースを除いて: 写真 #2 の順序が手動で 50 などに変更された場合、新しい写真はorder = 50
最初の写真に属していても (タイムスタンプに従って) 与えられます。
必要なもの
私が必要としているのは、タイムスタンプと手動で設定された順序に従って写真を並べ替える方法です。
強調した2 番目の問題に対する解決策があるかもしれませんし、これに対処するためのまったく別の方法を知っているかもしれません。いずれにせよ、あなたの助けに感謝します。