質問編集履歴
4
CREATE TABLE部分を修正しました(不要なAUTO INCREMENTを含んでいたため)
title
CHANGED
File without changes
|
body
CHANGED
@@ -29,7 +29,7 @@
|
|
29
29
|
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
|
30
30
|
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
|
31
31
|
PRIMARY KEY (`id`)
|
32
|
-
) ENGINE=InnoDB
|
32
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
33
33
|
|
34
34
|
INSERT INTO `projects` VALUES
|
35
35
|
(998,'鉛筆ショップ','2021-07-01 00:00:00','2021-07-01 00:00:00'),
|
@@ -43,7 +43,7 @@
|
|
43
43
|
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
|
44
44
|
PRIMARY KEY (`id`),
|
45
45
|
KEY `shops_project_id_index` (`project_id`)
|
46
|
-
) ENGINE=InnoDB
|
46
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
47
47
|
|
48
48
|
INSERT INTO `shops` VALUES
|
49
49
|
(1,999,'大阪本店','2021-07-01 00:00:00','2021-07-01 00:00:00'),
|
@@ -63,7 +63,7 @@
|
|
63
63
|
PRIMARY KEY (`id`),
|
64
64
|
KEY `earnings_project_id_index` (`project_id`),
|
65
65
|
KEY `earnings_shop_id_index` (`shop_id`)
|
66
|
-
) ENGINE=InnoDB
|
66
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
67
67
|
|
68
68
|
INSERT INTO `earnings` VALUES
|
69
69
|
(1,999,1,'1','リンゴ味','2021-06-15','まあまあ売れた。',10,'2021-07-01 00:00:00','2021-07-01 00:00:00'),
|
3
解消しました。他追記もしています。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
データのMAX値を持つレコードをGROUP BY を使わずに絞込み、別のテーブルに結合させると、思うような結果が得られない
|
1
|
+
【解決】データのMAX値を持つレコードをGROUP BY を使わずに絞込み、別のテーブルに結合させると、思うような結果が得られない
|
body
CHANGED
@@ -70,8 +70,8 @@
|
|
70
70
|
(2,999,1,'2','ブドウ味','2021-06-20','少し売れた。',5,'2021-07-01 00:00:00','2021-07-01 00:00:00'),
|
71
71
|
(3,999,1,'1','リンゴ味','2021-06-30','かなり売れた。',20,'2021-07-01 00:00:00','2021-07-01 00:00:00');
|
72
72
|
```
|
73
|
-
このうち、
|
73
|
+
このうち、`earnings` テーブルには、ある店舗(`shop_id`)のある日(`earned_date`)におけるある商品(`item_id`)の総売上個数(`earning`)を、それひとつのみ入れていく形になります。
|
74
|
-
(テーブルの定義で
|
74
|
+
(テーブルの定義で`unique`系の制約もなく、分かりにくくて申し訳ありません…。)
|
75
75
|
|
76
76
|
|
77
77
|
なお、`item`に関するテーブルもあるのですが、必要な情報は`earnings`テーブルに織り込んでいて結合にも使用しないため、ここでは割愛します。
|
@@ -215,5 +215,9 @@
|
|
215
215
|

|
216
216
|
### 追記
|
217
217
|
|
218
|
-
必要であればLaravelのクエリビルダを掲載することも可能です。
|
218
|
+
~~必要であればLaravelのクエリビルダを掲載することも可能です。
|
219
|
-
ただし、このページとは別の質問としてお伺いする可能性もあります。予めご了承ください。
|
219
|
+
ただし、このページとは別の質問としてお伺いする可能性もあります。予めご了承ください。~~
|
220
|
+
↑ この質問ページ内でご回答を頂く中で、Laravelでの問題も解消できると確信を持てました。本当にありがとうございました。
|
221
|
+
|
222
|
+
また、念のため申し上げますと、ここでは自分の手元にあるコードを別の例に書き換えて記載しております。
|
223
|
+
データの内容などは架空のものになりますので、安心してご検証いただければ幸いです。
|
2
title
CHANGED
File without changes
|
body
CHANGED
@@ -70,6 +70,10 @@
|
|
70
70
|
(2,999,1,'2','ブドウ味','2021-06-20','少し売れた。',5,'2021-07-01 00:00:00','2021-07-01 00:00:00'),
|
71
71
|
(3,999,1,'1','リンゴ味','2021-06-30','かなり売れた。',20,'2021-07-01 00:00:00','2021-07-01 00:00:00');
|
72
72
|
```
|
73
|
+
このうち、`earnings`テーブルには、ある店舗(`shop_id`)のある日(`earned_date`)におけるある商品(`item_id`)の総売上個数(`earning`)を、それひとつのみ入れていく形になります。
|
74
|
+
(テーブルの定義で`unique`系の制約がなく、説明がないと分かりにくいですよね…。)
|
75
|
+
|
76
|
+
|
73
77
|
なお、`item`に関するテーブルもあるのですが、必要な情報は`earnings`テーブルに織り込んでいて結合にも使用しないため、ここでは割愛します。
|
74
78
|
|
75
79
|
### 実行内容
|
1
体裁を整えました
title
CHANGED
File without changes
|
body
CHANGED
@@ -177,6 +177,7 @@
|
|
177
177
|
```
|
178
178
|
|
179
179
|
**● いじった中での発見…**
|
180
|
+
|
180
181
|
[3] 15,16行目の `project_id`による絞込み制約を消すと、中身は`(null)`だが一応`shop_id=1`の列が立つ
|
181
182
|
```SQL
|
182
183
|
SELECT
|