MySQLデータベースの列を他の列の関数にするにはどうすればよいですか?
質問
私は、読者が本のどこにいるかを追跡するデータベースを使用しています。これを行うには、ページカウント列と現在のページ列を使用します。
(currentpage / pagecount)に等しい 'progress'列を追加する方法はありますか?
解決
2つのオプションがあります。 SELECT
でそのフィールドを作成できます:
SELECT book_id, user_id, (currentpage/pagecount) AS progress FROM user_books;
または VIEW
を作成します。これにより、明示的に操作を指定せずにクエリを実行できます。
CREATE VIEW user_books_progress AS
(SELECT book_id, user_id, (currentpage/pagecount) AS progress FROM user_books);
その後、通常のテーブルとしてビューをクエリすることができます:
SELECT book_id, user_id, progress FROM user_books_progress;
算術演算子と算術演算の詳細については、ドキュメントをご覧ください:
他のヒント
列を関数として定義することはできません。これには少なくとも2つの回避策があります。
- BEFORE UPDATEトリガーを使用して進行状況の列を更新します。BEFOREINSERTのトリガーも必要になります。
- 進行状況列を計算するビューを使用します。
所属していません StackOverflow