teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

指摘事項の修正

2020/10/08 14:32

投稿

kirby318
kirby318

スコア10

title CHANGED
File without changes
body CHANGED
@@ -2,22 +2,48 @@
2
2
 
3
3
  ### やりたいこと
4
4
 
5
- * **テーブル名: `trump`**
5
+ ```sql
6
6
 
7
+ # テーブル作成
8
+ CREATE TABLE `trump` (
7
- |id|card_type|created_at|
9
+ `id` int(11) NOT NULL,
8
- |:--|:--:|--:|
9
- |1|K|2020-10-01 11:00:00|
10
- |1|K|2020-10-01 12:00:00|
11
- |1|K|2020-10-01 13:00:00|
12
- |1|Q|2020-10-01 13:00:00|
13
- |1|Q|2020-10-01 14:00:00|
14
- |2|K|2020-10-01 11:00:00|
15
- |2|K|2020-10-01 12:00:00|
16
- |2|Q|2020-10-01 11:00:00|
17
- |2|Q|2020-10-01 13:00:00|
18
- |3|`JOKER`|2020-10-01 11:00:00|
19
- |3|`JOKER`|2020-10-01 12:00:00|
10
+ `card_type` varchar(40) NOT NULL COMMENT 'カード種別',
11
+ `created_at` datetime DEFAULT NULL COMMENT '作成日時'
12
+ );
20
13
 
14
+ # インサート
15
+ INSERT INTO `trump` (`id`, `card_type`, `created_at`) VALUES
16
+   (1, "K", "2020-10-01 11:00:00"),
17
+   (1, "K", "2020-10-01 12:00:00"),
18
+   (1, "K", "2020-10-01 13:00:00"),
19
+   (1, "Q", "2020-10-01 13:00:00"),
20
+   (1, "Q", "2020-10-01 14:00:00"),
21
+   (2, "K", "2020-10-01 11:00:00"),
22
+   (2, "K", "2020-10-01 12:00:00"),
23
+   (2, "Q", "2020-10-01 11:00:00"),
24
+   (2, "Q", "2020-10-01 13:00:00"),
25
+   (3, "JOKER", "2020-10-01 11:00:00"),
26
+   (3, "JOKER", "2020-10-01 12:00:00");
27
+
28
+ # データ取得
29
+ select * from trump;
30
+ +----+-----------+---------------------+
31
+ | id | card_type | created_at |
32
+ +----+-----------+---------------------+
33
+ | 1 | K | 2020-10-01 11:00:00 |
34
+ | 1 | K | 2020-10-01 12:00:00 |
35
+ | 1 | K | 2020-10-01 13:00:00 |
36
+ | 1 | Q | 2020-10-01 13:00:00 |
37
+ | 1 | Q | 2020-10-01 14:00:00 |
38
+ | 2 | K | 2020-10-01 11:00:00 |
39
+ | 2 | K | 2020-10-01 12:00:00 |
40
+ | 2 | Q | 2020-10-01 11:00:00 |
41
+ | 2 | Q | 2020-10-01 13:00:00 |
42
+ | 3 | JOKER | 2020-10-01 11:00:00 |
43
+ | 3 | JOKER | 2020-10-01 12:00:00 |
44
+ +----+-----------+---------------------+
45
+ ```
46
+
21
47
  上記のようなテーブルがあるとします。
22
48
  以下の条件に合ったデータを `id` でグループ化して `mysql` で取得したいと思っています。
23
49
 
@@ -57,29 +83,4 @@
57
83
  もし、一回で取得するのが難しければ、phpと処理を分けるつもりなのですが、
58
84
  できればsqlで一回で取得したいです。
59
85
 
60
- どのようなクエリを書けば良いのか、ご教示いただきたいです。よろしくお願いします。
86
+ どのようなクエリを書けば良いのか、ご教示いただきたいです。よろしくお願いします。
61
-
62
-
63
- サンプルのテーブル・レコードのクエリを記載します。
64
- ```sql
65
- # テーブル作成
66
- CREATE TABLE `trump` (
67
- `id` int(11) NOT NULL,
68
- `card_type` varchar(40) NOT NULL COMMENT 'カード種別',
69
- `created_at` datetime DEFAULT NULL COMMENT '作成日時'
70
- );
71
-
72
- # インサート
73
- INSERT INTO `trump` (`id`, `card_type`, `created_at`) VALUES
74
- (1, "K", "2020-10-01 11:00:00"),
75
- (1, "K", "2020-10-01 12:00:00"),
76
- (1, "K", "2020-10-01 13:00:00"),
77
- (1, "Q", "2020-10-01 13:00:00"),
78
- (1, "Q", "2020-10-01 14:00:00"),
79
- (2, "K", "2020-10-01 11:00:00"),
80
- (2, "K", "2020-10-01 12:00:00"),
81
- (2, "Q", "2020-10-01 11:00:00"),
82
- (2, "Q", "2020-10-01 13:00:00"),
83
- (3, "JOKER", "2020-10-01 11:00:00"),
84
- (3, "JOKER", "2020-10-01 12:00:00");
85
- ```

5

サンプルsql追加

2020/10/08 14:32

投稿

kirby318
kirby318

スコア10

title CHANGED
File without changes
body CHANGED
@@ -57,4 +57,29 @@
57
57
  もし、一回で取得するのが難しければ、phpと処理を分けるつもりなのですが、
58
58
  できればsqlで一回で取得したいです。
59
59
 
60
- どのようなクエリを書けば良いのか、ご教示いただきたいです。よろしくお願いします。
60
+ どのようなクエリを書けば良いのか、ご教示いただきたいです。よろしくお願いします。
61
+
62
+
63
+ サンプルのテーブル・レコードのクエリを記載します。
64
+ ```sql
65
+ # テーブル作成
66
+ CREATE TABLE `trump` (
67
+ `id` int(11) NOT NULL,
68
+ `card_type` varchar(40) NOT NULL COMMENT 'カード種別',
69
+ `created_at` datetime DEFAULT NULL COMMENT '作成日時'
70
+ );
71
+
72
+ # インサート
73
+ INSERT INTO `trump` (`id`, `card_type`, `created_at`) VALUES
74
+ (1, "K", "2020-10-01 11:00:00"),
75
+ (1, "K", "2020-10-01 12:00:00"),
76
+ (1, "K", "2020-10-01 13:00:00"),
77
+ (1, "Q", "2020-10-01 13:00:00"),
78
+ (1, "Q", "2020-10-01 14:00:00"),
79
+ (2, "K", "2020-10-01 11:00:00"),
80
+ (2, "K", "2020-10-01 12:00:00"),
81
+ (2, "Q", "2020-10-01 11:00:00"),
82
+ (2, "Q", "2020-10-01 13:00:00"),
83
+ (3, "JOKER", "2020-10-01 11:00:00"),
84
+ (3, "JOKER", "2020-10-01 12:00:00");
85
+ ```

4

バージョン追加

2020/10/08 12:51

投稿

kirby318
kirby318

スコア10

title CHANGED
File without changes
body CHANGED
@@ -1,3 +1,5 @@
1
+ mysqlバージョン: `v5.7`
2
+
1
3
  ### やりたいこと
2
4
 
3
5
  * **テーブル名: `trump`**

3

書式改善・条件追加

2020/10/08 12:23

投稿

kirby318
kirby318

スコア10

title CHANGED
File without changes
body CHANGED
@@ -17,7 +17,7 @@
17
17
  |3|`JOKER`|2020-10-01 12:00:00|
18
18
 
19
19
  上記のようなテーブルがあるとします。
20
- 以下の条件に合ったデータを `id` でグループ化して取得したいと思っています。
20
+ 以下の条件に合ったデータを `id` でグループ化して `mysql` で取得したいと思っています。
21
21
 
22
22
  ###### ■ 取得したい内容
23
23
  ```

2

タグ追加

2020/10/08 09:54

投稿

kirby318
kirby318

スコア10

title CHANGED
File without changes
body CHANGED
File without changes

1

書式改善

2020/10/08 09:53

投稿

kirby318
kirby318

スコア10

title CHANGED
File without changes
body CHANGED
@@ -4,25 +4,17 @@
4
4
 
5
5
  |id|card_type|created_at|
6
6
  |:--|:--:|--:|
7
- |1|`JOKER`|2020-10-01 11:00:00|
7
+ |1|K|2020-10-01 11:00:00|
8
- |1|`JOKER`|2020-10-01 12:00:00|
8
+ |1|K|2020-10-01 12:00:00|
9
- |1|`JOKER`|2020-10-01 13:00:00|
9
+ |1|K|2020-10-01 13:00:00|
10
10
  |1|Q|2020-10-01 13:00:00|
11
11
  |1|Q|2020-10-01 14:00:00|
12
- |2|`JOKER`|2020-10-01 11:00:00|
12
+ |2|K|2020-10-01 11:00:00|
13
- |2|Q|2020-10-01 12:00:00|
13
+ |2|K|2020-10-01 12:00:00|
14
+ |2|Q|2020-10-01 11:00:00|
14
15
  |2|Q|2020-10-01 13:00:00|
15
- |2|Q|2020-10-01 14:00:00|
16
16
  |3|`JOKER`|2020-10-01 11:00:00|
17
17
  |3|`JOKER`|2020-10-01 12:00:00|
18
- |3|K|2020-10-01 11:00:00|
19
- |3|K|2020-10-01 13:00:00|
20
- |4|Q|2020-10-01 11:00:00|
21
- |4|Q|2020-10-01 12:00:00|
22
- |4|K|2020-10-01 13:00:00|
23
- |4|K|2020-10-01 14:00:00|
24
- |5|`JOKER`|2020-10-01 11:00:00|
25
- |5|`JOKER`|2020-10-01 12:00:00|
26
18
 
27
19
  上記のようなテーブルがあるとします。
28
20
  以下の条件に合ったデータを `id` でグループ化して取得したいと思っています。
@@ -44,20 +36,21 @@
44
36
    【エイリアス】 card_type_2
45
37
  ```
46
38
 
39
+ ※ 同率一位の場合、 `created_at` で比較し、新しい方が **1位** とする。
47
40
 
41
+
48
42
  ###### ■ 結果として欲しいレコード
49
43
 
50
44
  結果としては以下のレコードが欲しいです。
51
45
 
52
46
  |id|card_type_1|created_at_1|card_type_2|created_at_2|
53
47
  |:--:|:--:|:--:|:--:|:--:|
54
- |1|`JOKER`|2020-10-01 **13:00:00**|Q|2020-10-01 **14:00:00**|
55
- |2|Q|2020-10-01 **14:00:00** |`JOKER`|2020-10-01 11:00:00|
56
- |3|K|2020-10-01 **13:00:00**|`JOKER`|2020-10-01 **12:00:00**|
57
- |4|K|2020-10-01 **14:00:00**|Q|2020-10-01 **12:00:00**|
48
+ |1|K|2020-10-01 **13:00:00**|Q|2020-10-01 **14:00:00**|
49
+ |2|Q|2020-10-01 **13:00:00** |K|2020-10-01 **12:00:00**|
58
- |5| `JOKER` | 2020-10-01 **12:00:00**|**null**|**null** |
50
+ |3| `JOKER` | 2020-10-01 **12:00:00**|**null**|**null** |
59
51
 
60
52
 
53
+
61
54
  いろいろ調べたり試してみたのですが、そもそもこれが実現できることなのかもわからず、困っています。
62
55
  もし、一回で取得するのが難しければ、phpと処理を分けるつもりなのですが、
63
56
  できればsqlで一回で取得したいです。