現在、下記のテーブルのように、日々の商品の状態をitem_statusテーブルで保存しています。
lang
1CREATE TABALE `items(商品)` ( 2 `id` int(11) NOT NULL AUTO_INCREMENT, 3 `name` varchar(16) NOT NULL, 4 PRIMARY KEY (`id`), 5); 6 7CREATE TABALE `status(状態)` ( 8 `id` int(11) NOT NULL AUTO_INCREMENT, 9 `name` varchar(16) NOT NULL, 10 PRIMARY KEY (`id`), 11); 12 13CREATE TABALE `items_status` ( 14 `id` int(11) NOT NULL AUTO_INCREMENT, 15 `item_id` int(1) NOT NULL, 16 `status_id` int(2) NOT NULL, 17 `output_date` date NOT NULL, 18 PRIMARY KEY (`id`), 19);
今回、例えばoutput_dateが今日のものを全件取得する際に、直前のstatusを合せて取得したいと考えております。
ただし、単純に昨日のstatusを取得するというものではなく、今日のstatusと異なる、もっとも直近のstatusを直前のstatusと定義しております(存在しない場合はNULL)。
追記:
サンプルデータと取得したい情報は以下のとおりです。
###items(商品)
id | name |
---|---|
1 | サーモン |
2 | 昆布 |
###status(状態)
id | name |
---|---|
1 | good |
2 | poor |
3 | bad |
###items_status
id | item_id | status_id | output_date |
---|---|---|---|
1 | 1 | 1 | 2017-09-01 |
2 | 2 | 1 | 2017-09-01 |
3 | 1 | 2 | 2017-09-02 |
4 | 2 | 1 | 2017-09-02 |
5 | 1 | 3 | 2017-09-03 |
6 | 2 | 1 | 2017-09-03 |
7 | 1 | 3 | 2017-09-04 |
8 | 2 | 1 | 2017-09-04 |
###取得したい情報(output_date: 2017-09-04を指定)
|items.name|status.name|status.name(直前)|output_date|
|:--|:--|:--|
|サーモン|bad|poor|2017-09-04|
|昆布|good|NULL|2017-09-04|
回答2件
あなたの回答
tips
プレビュー