🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

2810閲覧

[ Laravel / MySQL ] 日付順に並び替えて、並び変わったものに新しく番号を順に振り直し、DBに保存したい

--shiori--

総合スコア3

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/01/29 00:19

前提・実現したいこと

以下テーブルを、日付順に並び替えて、numberの番号がバラバラになっているので、順に並び替えてDBに保存したいです。

MySQL

1+----+-----------+--------+------------+----------+---------------------+---------------------+------------+ 2| id | course_id | number | date | start | created_at | updated_at | deleted_at | 3+----+-----------+--------+------------+----------+---------------------+---------------------+------------+ 4| 3 | 1 | 1 | 2021-01-01 | 00:00:00 | 2021-01-28 23:00:21 | 2021-01-28 23:00:21 | NULL | 5| 4 | 1 | 3 | 2021-01-03 | 00:00:00 | 2021-01-28 23:00:21 | 2021-01-28 23:00:21 | NULL | 6| 5 | 1 | 5 | 2021-01-05 | 00:00:00 | 2021-01-28 23:00:21 | 2021-01-28 23:00:21 | NULL | 7| 6 | 1 | 6 | 2021-01-06 | 00:00:00 | 2021-01-28 23:00:21 | 2021-01-28 23:00:21 | NULL | 8| 7 | 1 | 7 | 2021-01-07 | 00:00:00 | 2021-01-28 23:00:21 | 2021-01-28 23:00:21 | NULL | 9| 10 | 1 | 4 | 2021-03-04 | 00:00:00 | 2021-01-28 23:00:21 | 2021-01-28 23:00:21 | NULL | 10| 13 | 1 | 2 | 2021-04-02 | 00:00:00 | 2021-01-28 23:00:21 | 2021-01-28 23:00:21 | NULL | 11+----+-----------+--------+------------+----------+---------------------+---------------------+------------+

発生している問題・エラーメッセージ

日付順に並び替えて取得するまでは、SQL文でできました。

SQL

1SELECT * FROM lessons WHERE course_id=1 ORDER BY date ASC, start ASC

しかし、並び替えたものに対し、numberを再度振り直したいのですが、よくわからず、、、

補足情報(FW/ツールのバージョンなど)

Laravel 8.25.0
MySQL 8.0.22
PHP 7.4.9

お力添えいただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

今はたまたま日付順だけど、
他の要素で並び替えをするたびに、その番号を更新して保存してから表示するの?
不毛だし無駄だよ。

RANK関数はないけど、MySQLのみでランキング表示させたい - Qiita

こういう工夫をすれば、任意の並べ替えのもとに表示用に連番を振ることができるので、
連番を付与してデータベースを更新する、
みたいな処理はいらなくなるのですが。

DB::raw()とか駆使すればLaravelでも使えるかと。

投稿2021/01/29 00:34

編集2021/01/29 00:41
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

--shiori--

2021/01/29 00:47

ご丁寧に、解説有難うございます。 また、DB::raw()も非常に参考になりました。 ただ、申し訳ございません、kawax様の方が早かったので、kawax様をベストアンサーにさせていただきました。
guest

0

ベストアンサー

なぜか同じような質問が多いけど
そもそもやろうとしてることが無意味なのでやめたほうがいい。
そういう連番は表示時に作ればいい数字。

DB内に順番に依存したデータは作らない。

numberを書き換える場合、件数が少ない内は問題なく動いても数が増えると遅すぎて使い物にならなくなる。

投稿2021/01/29 00:33

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

--shiori--

2021/01/29 00:48

ご丁寧に、解説有難うございます。 使い物にならない件も、参考になりました。 有難うございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問