質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.47%
MySQL

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

Q&A

解決済

1回答

2068閲覧

在庫管理 変動ランキングデータ取得

nerd

総合スコア37

MySQL

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

0グッド

1クリップ

投稿2017/07/26 00:24

編集2017/07/26 01:20

###前提・実現したいこと
PHP,MYSQLにてメーカー在庫の在庫の変動を検知するためのシステムを考えております。
1日に10万件の在庫データをMYSQLに登録し、それを閲覧する方法。
閲覧の時に、指定日を基にデータを取得することまではできましたが、
在庫変動のランキングなどを作成できたらと考えております。

  1. 在庫の減った数の多い順を取得

メーカーからの在庫CSV内容
商品識別ID,在庫数

--現在のDB構成-- item_code : 商品識別ID stock : 実在個数 created : 登録日

日付ごとにデータを取得し、PHP側で比較しその結果を表示するとなると10万件 × 指定日時数 となると
処理が重くなってしまうのかと思い、MYSQLのほうで解決できるのか模索しております。

何卒ご教授お願いいたします。

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

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

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

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

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

m.ts10806

2017/07/26 01:10 編集

在庫変動ということは入庫・出庫の情報(履歴?)も持っているわけですよね?入庫・出庫情報はどのように持っていますか?
nerd

2017/07/26 01:14 編集

ご質問ありがとうございます。入庫、出庫に関して基本的にないです。その日の在庫数がstock に登録されます。 外部のデータになるので、入庫、出庫の考えがなく、その日の在庫数を登録する形です。
m.ts10806

2017/07/26 01:14

それでは変動はどのように感知しているんでしょう?pkが商品識別IDではなく別にあるということでしょうか?
nerd

2017/07/26 01:17 編集

メーカー在庫になるので、メーカーから送られてくる在庫になっています。 なので、こちら側で各商品の在庫変動を検知しようと考えておりました。 質問文に追記させていただきます。
m.ts10806

2017/07/26 01:48

「各商品の在庫変動を検知」した部分のデータが欲しいですね。入出庫までは難しいとしても履歴として。既に回答もありますが、データの設計(流れを含めた)からしなおしたほうがいいかもしれませんね・・
nerd

2017/07/26 01:53

まさにその通りでございます。 データ設計の部分や、処理の流れが明確にできていないです。
guest

回答1

0

ベストアンサー

在庫データしかないのでしょうか?それとも入出庫データがあるのでしょうか?
たとえば出庫が100本のみある商品と、入庫が1,000+出庫が1,080あるデータでは
前者のほうが在庫数の変動が多くなってしまいます。

処理自体は日締め処理で当日のデータを確定してしまえば、前日との差を
掲載して保管しておけば、あとから遡ってランクを拾いやすくなるとおもいます

いずれにしろテーブルの設計から考え直した方がいいかもしれません

投稿2017/07/26 01:37

編集2017/07/26 01:45
yambejp

総合スコア114968

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

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

nerd

2017/07/26 01:44

ご回答ありがとうございます。 在庫データしかございません。 日々の在庫ログ用テーブル 前日との差のログテーブル に分けて保管という意味になるでしょうか。
yambejp

2017/07/26 01:48

> 在庫データしかございません。 そうですか、そうなると前述したとおりおそらく意味のない 集計データになりますのでご留意下さい > 日々の在庫ログ用テーブル > 前日との差のログテーブル そうです。 過去のデータは変更されないので、毎回前日との差を計算する 意味はありません。前日よりまえのデータは静的データだという 前提で、前日との差を専用テーブルにとっておけば 参照速度は格段にはやくなります
nerd

2017/07/26 01:57

理解不足で恐縮ですが、 `日々の在庫ログ用のテーブル` は静的DBとしてログとして保存。 ランキング算出時に、 指定日開始日と指定日終了時 で取得し差を`前日との差のログテーブル` に保存し、出力時にそこから値をとってくるイメージでしょうか?
yambejp

2017/07/26 02:16

> ランキング算出時に、 > 指定日開始日と指定日終了時 で取得し差を`前日との差のログテーブル` > に保存し、出力時にそこから値をとってくるイメージでしょうか? ちがいます。 一日の終りに、その日の在庫と前日の在庫のさを当日の変動値として 保存しておくのです。 もちろん、任意のA日からB日の変動をその2日の在庫差だけ みるなら、サマリをとる意味はありませんので、 都度都度計算して下さい。 変動をみたいというので、任意の2日間のデータを取る際に 平均変動値や最大変動値などをみたいな統計データも必要なのかと 推定して回答しています。 A日の在庫=100、翌日=80、2日後=50、3日後=120、 B日(4日後)=100本だったとします。 ※A日の3日後には補充された A日とB日の差は0本でランクは最下位ですが、平均移動値や 最大移動値ではランクがつくと思います いずれにしどうしたいかを決めるのは質問者さんです 要求定義・要件定義がきちんとされないかぎり わたしは想像しながら回答しているに過ぎません
nerd

2017/07/26 02:23

ご回答ありがとうございます。 まさにご指摘の通りの統計データの作成を考えておりました。 変動値を登録していく方法を考えておりませんでした。 確かに、その方法のほうが、後々楽に操作できるのかなとおもいました。 そもそも、質問の方法も曖昧でした。 お付き合いいただき誠に有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問