プロジェクトでは、何らかの不可逆的な理由により、テーブルに保存されたデータがページの表示要件を満たすことが困難な場合があります。前回のプロジェクトでは記事の内容を表示する機能がありました。記事は保留中、公開済み、オフラインの 3 つの状態に分かれていました。 データテーブル内のステータスを決定するために使用されるフィールド(PROMOTE_STATUS)の値は、それぞれ 0、1、2 です。当初の要件では、記事は保留中と公開済みとしてのみ表示され、公開済みが保留中よりも前にリストされ、2 つの状態がそれぞれの状況に応じて並べ替えられるというものでした。この実装は比較的単純で、次の order by ステートメントで実現できます。 PROMOTE_STATUS 降順、SEQUENCE_ID 降順で並べ替えます...... テスト後、この製品は最適化できると感じ、記事の表示を公開済み、公開予定、オフラインに変更する必要がありました (そう、オフラインが突然必要になり、誇らしげに最後に配置されました)。ではどうすればいいのでしょうか?他の同僚もこのテーブルを使用しているため、PROMOTE_STATUS の対応する値 (リリース済み、リリース保留中、オフライン) を 2、1、0 に変更することは絶対に不可能です。こちらの対応が変更になった場合。他の同僚のコードの判断ロジックを変更する必要があります。 そこで、すべての結合を考え、3 つの状態の記事の表示順序も実装する必要がありました。したがって、最終的なアイデアは、PROMOTE_STATUS がそれぞれ 1、0、2 の場合のデータを見つけ、各状態の状況に応じて順序を並べ替え、最後に各サブセットを結合してページに返して表示することです。 最終的な SQL ステートメントは次のようになります。 選択 PROMOTE_ID、 シーケンスID、 PROMOTE_STATUS、 PROMOTE_TITLE、 発売日 から ( (選択 PROMOTE_ID、 シーケンスID、 PROMOTE_STATUS、 PROMOTE_TITLE、 発売日 SYS_TEXT_PROMOTE から どこ ENABLED_FLAG = '1' PROMOTE_STATUS=1 かつ かつ SORT_ID = #{params.sortId} SEQUENCE_ID DESC、LAST_UPDATE_DATE DESC で並べ替え) a) すべて結合 選択 PROMOTE_ID、 シーケンスID、 PROMOTE_STATUS、 PROMOTE_TITLE、 発売日 から ( (選択 PROMOTE_ID、 シーケンスID、 PROMOTE_STATUS、 PROMOTE_TITLE、 発売日 SYS_TEXT_PROMOTE から どこ ENABLED_FLAG = '1' PROMOTE_STATUS=2 かつ かつ SORT_ID = #{params.sortId} RELEASE_DATE DESC、LAST_UPDATE_DATE DESC で並び替え) b) すべて結合 選択 PROMOTE_ID、 シーケンスID、 PROMOTE_STATUS、 PROMOTE_TITLE、 発売日 から ( (選択 PROMOTE_ID、 シーケンスID、 PROMOTE_STATUS、 PROMOTE_TITLE、 発売日 SYS_TEXT_PROMOTE から どこ ENABLED_FLAG = '1' かつ PROMOTE_STATUS=0 かつ SORT_ID = #{params.sortId} RELEASE_DATE DESC、LAST_UPDATE_DATE DESC で並び替える) c) 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: Docker での Redis 接続の急増をトラブルシューティングした実践的な記録
Web ページのデザインに関する質問です。すべてに答えられるでしょうか? 1. 単一選択の質問 (...
HTMLの動作原理: 1. ローカル操作: ブラウザでhtmlファイルを開く2. リモートアクセス...
シェルスクリプト #!/bin/sh # 現在のディレクトリ CURRENT_DIR=$( cd &...
Docker Toolbox は、Windows 10 Professional より前のバージョン...
canisue (http://caniuse.com/#search=border-radius)...
少し前にSQLの独学を終え、MySQL 8.0.17をダウンロードしました。インストールして設定した...
目次識別子の長さ制限権限テーブルの範囲フィールドの長さ制限データベースとテーブルの数の制限テーブルサ...
問題の説明私たちのプロジェクトでは、水平方向のテーブルが一般的ですが、必要に応じて垂直方向のテーブル...
目次1. 反射とは何ですか? 2. JavaScriptで反映する2.1 Reflect.get(タ...
目次背景問題の説明原因分析シミュレーションする総括する背景日常の使用において、MySQL で個別また...
Line-height はどのように継承されますか?30px などの特定の値を書き込むと、この値が継...
目次過去1週間の時間を取得する過去1か月の時間を取得する過去3か月分を取得新しい Date() と ...
プロセス分析の実装(1)繰り返して電話をかけるには?答え: 関数をカプセル化して一度だけ呼び出すコー...
目次1. React フックと純粋関数2. シンプルなmyUseState 3. myUseStat...
1. シーケンステーブルを作成する テーブル `sequence` を作成します ( `name` ...