質問編集履歴
3
test
CHANGED
File without changes
|
test
CHANGED
@@ -19,6 +19,10 @@
|
|
19
19
|
|
20
20
|
|
21
21
|
###質問1
|
22
|
+
|
23
|
+
user_idをキーとしてactionテーブルとuserテーブルを結合し、userに対してactionテーブルのレコードが複数ある場合には、action.dateが最も最新のデータのみを取得したいです。
|
24
|
+
|
25
|
+
また、合わせて、actionにレコードが存在しないuserは、actionのカラムをNULLにした形で取得したいです。
|
22
26
|
|
23
27
|
下記のような結果を取得するには、どのようなSQLが適当でしょうか?
|
24
28
|
|
2
サンプルデータをフォーマットしました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -60,9 +60,15 @@
|
|
60
60
|
|
61
61
|
##### ★サンプルデータ★
|
62
62
|
|
63
|
+
※userテーブルのuser_idが、actionテーブルのuser_idとマッピングされます。
|
63
64
|
|
64
65
|
|
66
|
+
|
65
|
-
######【userテーブル】
|
67
|
+
######【userテーブル】
|
68
|
+
|
69
|
+
- テーブル作成
|
70
|
+
|
71
|
+
```SQL
|
66
72
|
|
67
73
|
CREATE TABLE `user` (
|
68
74
|
|
@@ -74,9 +80,13 @@
|
|
74
80
|
|
75
81
|
);
|
76
82
|
|
83
|
+
```
|
77
84
|
|
78
85
|
|
79
86
|
|
87
|
+
- データ投入
|
88
|
+
|
89
|
+
```SQL
|
80
90
|
|
81
91
|
INSERT INTO user VALUES(NULL,"yamada");
|
82
92
|
|
@@ -84,27 +94,35 @@
|
|
84
94
|
|
85
95
|
INSERT INTO user VALUES(NULL,"sato");
|
86
96
|
|
97
|
+
```
|
87
98
|
|
88
99
|
|
89
|
-
```
|
90
100
|
|
91
|
-
|
101
|
+
- テーブル内のデータ
|
92
102
|
|
93
|
-
==========
|
94
103
|
|
95
|
-
1,yamada
|
96
104
|
|
97
|
-
|
105
|
+
|user_id|name|
|
98
106
|
|
99
|
-
|
107
|
+
|:--|:--|
|
100
108
|
|
109
|
+
|1|yamada|
|
110
|
+
|
111
|
+
|2|suzuki|
|
112
|
+
|
101
|
-
|
113
|
+
|3|sato|
|
102
114
|
|
103
115
|
|
104
116
|
|
105
117
|
|
106
118
|
|
107
119
|
######【actionテーブル】
|
120
|
+
|
121
|
+
- テーブル作成
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
```SQL
|
108
126
|
|
109
127
|
CREATE TABLE `action` (
|
110
128
|
|
@@ -120,7 +138,13 @@
|
|
120
138
|
|
121
139
|
);
|
122
140
|
|
141
|
+
```
|
123
142
|
|
143
|
+
|
144
|
+
|
145
|
+
- データ投入
|
146
|
+
|
147
|
+
```SQL
|
124
148
|
|
125
149
|
INSERT INTO action VALUES(NULL,1,"2019-01-01","work");
|
126
150
|
|
@@ -130,22 +154,22 @@
|
|
130
154
|
|
131
155
|
INSERT INTO action VALUES(NULL,1,"2019-01-01","shopping");
|
132
156
|
|
133
|
-
|
134
|
-
|
135
157
|
```
|
136
|
-
|
137
|
-
action_id,user_id,date,action
|
138
|
-
|
139
|
-
==========
|
140
|
-
|
141
|
-
1,1,2019-01-01,work
|
142
|
-
|
143
|
-
2,1,2019-01-02,rest
|
144
|
-
|
145
|
-
3,3,2019-01-02,shopping
|
146
|
-
|
147
|
-
(4,1,2019-01-01,shopping)
|
148
158
|
|
149
159
|
|
150
160
|
|
151
|
-
|
161
|
+
- テーブル内のデータ
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
|action_id|user_id|date|action|
|
166
|
+
|
167
|
+
|:--|:--|:--|:--|
|
168
|
+
|
169
|
+
|1|1|2019-01-01|work|
|
170
|
+
|
171
|
+
|2|1|2019-01-02|rest|
|
172
|
+
|
173
|
+
|3|3|2019-01-02|shopping|
|
174
|
+
|
175
|
+
|4|1|2019-01-01|shopping|
|
1
サンプルテーブル作成のためのCREATE文とINSERT分を追記しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
表題の件に関して、ご教示いただけますと幸いです。
|
2
|
+
|
3
|
+
実際のテーブルの簡略版のため、テーブル構造に関するご指摘は御容赦いただけますと幸いです。
|
2
4
|
|
3
5
|
|
4
6
|
|
@@ -62,6 +64,28 @@
|
|
62
64
|
|
63
65
|
######【userテーブル】
|
64
66
|
|
67
|
+
CREATE TABLE `user` (
|
68
|
+
|
69
|
+
`user_id` bigint(20) NOT NULL AUTO_INCREMENT,
|
70
|
+
|
71
|
+
`name` text,
|
72
|
+
|
73
|
+
PRIMARY KEY (`user_id`)
|
74
|
+
|
75
|
+
);
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
INSERT INTO user VALUES(NULL,"yamada");
|
82
|
+
|
83
|
+
INSERT INTO user VALUES(NULL,"suzuki");
|
84
|
+
|
85
|
+
INSERT INTO user VALUES(NULL,"sato");
|
86
|
+
|
87
|
+
|
88
|
+
|
65
89
|
```
|
66
90
|
|
67
91
|
user_id,name
|
@@ -78,7 +102,35 @@
|
|
78
102
|
|
79
103
|
|
80
104
|
|
105
|
+
|
106
|
+
|
81
107
|
######【actionテーブル】
|
108
|
+
|
109
|
+
CREATE TABLE `action` (
|
110
|
+
|
111
|
+
`action_id` bigint(20) NOT NULL AUTO_INCREMENT,
|
112
|
+
|
113
|
+
`user_id` bigint(20) NOT NULL,
|
114
|
+
|
115
|
+
`date` date NOT NULL,
|
116
|
+
|
117
|
+
`action` text NOT NULL,
|
118
|
+
|
119
|
+
PRIMARY KEY (`action_id`)
|
120
|
+
|
121
|
+
);
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
INSERT INTO action VALUES(NULL,1,"2019-01-01","work");
|
126
|
+
|
127
|
+
INSERT INTO action VALUES(NULL,1,"2019-01-02","rest");
|
128
|
+
|
129
|
+
INSERT INTO action VALUES(NULL,3,"2019-01-02","shopping");
|
130
|
+
|
131
|
+
INSERT INTO action VALUES(NULL,1,"2019-01-01","shopping");
|
132
|
+
|
133
|
+
|
82
134
|
|
83
135
|
```
|
84
136
|
|
@@ -92,7 +144,7 @@
|
|
92
144
|
|
93
145
|
3,3,2019-01-02,shopping
|
94
146
|
|
95
|
-
(4,2019-01-01,shopping)
|
147
|
+
(4,1,2019-01-01,shopping)
|
96
148
|
|
97
149
|
|
98
150
|
|