質問編集履歴

8

分かり易く変更

2016/07/29 16:08

投稿

hiroppii
hiroppii

スコア38

title CHANGED
File without changes
body CHANGED
@@ -14,34 +14,34 @@
14
14
  +----+-------------+
15
15
 
16
16
  chat_messaテーブルのデータ
17
- +---------+-------------+
17
+ +---------+-------------------------+
18
- | chat_id | updated_date|
18
+ | chat_id | updated_date |
19
- +---------+-------------+
19
+ +---------+-------------------------+
20
- | 1 | 2016-07-26 |
21
- | 1 | 2016-07-27 |
20
+ | 1 | 2016-07-24 11:44:27 |
21
+ | 1 | 2016-07-24 19:42:42 |
22
- | 2 | 2016-07-28 |
22
+ | 2 | 2016-07-25 10:27:37 |
23
- | 2 | 2016-07-30 |
23
+ | 2 | 2016-07-29 13:45:59 |
24
+ | 3 | 2016-07-27 00:13:33 |
24
- | 3 | 2016-07-29 |
25
+ | 3 | 2016-07-29 08:13:13 |
25
- | 3 | 2016-07-31 |
26
- +---------+-------------+
26
+ +---------+-------------------------+
27
27
 
28
28
  結合後のデータでは、下記のように取得したいのですが、
29
- +----+-------------+---------+-------------+
29
+ +----+-------------+---------+-------------------------+
30
- | id | messa | chat_id | updated_date|
30
+ | id | messa | chat_id | updated_date |
31
- +----+-------------+---------+-------------+
31
+ +----+-------------+---------+-------------------------+
32
- | 3 | さようなら | 3 | 2016-07-31 |
32
+ | 3 | さようなら | 3 | 2016-07-29 08:13:13 |
33
- | 2 | こんばんは | 2 | 2016-07-30 |
33
+ | 2 | こんばんは | 2 | 2016-07-29 13:45:59 |
34
- | 1 | こんにちは | 1 | 2016-07-27 |
34
+ | 1 | こんにちは | 1 | 2016-07-24 19:42:42 |
35
- +----+-------------+---------+-------------+
35
+ +----+-------------+---------+-------------------------+
36
36
 
37
37
  order byとgroup byを併用すると、下記のようになってしまします。
38
- +----+-------------+---------+-------------+
38
+ +----+-------------+---------+-------------------------+
39
- | id | messa | chat_id | updated_date|
39
+ | id | messa | chat_id | updated_date |
40
- +----+-------------+---------+-------------+
40
+ +----+-------------+---------+-------------------------+
41
- | 3 | さようなら | 3 | 2016-07-29 |
41
+ | 3 | さようなら | 3 | 2016-07-27 00:13:33 |
42
- | 2 | こんばんは | 2 | 2016-07-28 |
42
+ | 2 | こんばんは | 2 | 2016-07-25 10:27:37 |
43
- | 1 | こんにちは | 1 | 2016-07-26 |
43
+ | 1 | こんにちは | 1 | 2016-07-24 11:44:27 |
44
- +----+-------------+---------+-------------+
44
+ +----+-------------+---------+-------------------------+
45
45
 
46
46
  ###発生している問題
47
47
  ```

7

分かり易く変更

2016/07/29 16:08

投稿

hiroppii
hiroppii

スコア38

title CHANGED
File without changes
body CHANGED
@@ -17,17 +17,20 @@
17
17
  +---------+-------------+
18
18
  | chat_id | updated_date|
19
19
  +---------+-------------+
20
+ | 1 | 2016-07-26 |
20
21
  | 1 | 2016-07-27 |
21
22
  | 2 | 2016-07-28 |
23
+ | 2 | 2016-07-30 |
22
24
  | 3 | 2016-07-29 |
25
+ | 3 | 2016-07-31 |
23
26
  +---------+-------------+
24
27
 
25
28
  結合後のデータでは、下記のように取得したいのですが、
26
29
  +----+-------------+---------+-------------+
27
30
  | id | messa | chat_id | updated_date|
28
31
  +----+-------------+---------+-------------+
29
- | 3 | さようなら | 3 | 2016-07-29 |
32
+ | 3 | さようなら | 3 | 2016-07-31 |
30
- | 2 | こんばんは | 2 | 2016-07-28 |
33
+ | 2 | こんばんは | 2 | 2016-07-30 |
31
34
  | 1 | こんにちは | 1 | 2016-07-27 |
32
35
  +----+-------------+---------+-------------+
33
36
 
@@ -35,9 +38,9 @@
35
38
  +----+-------------+---------+-------------+
36
39
  | id | messa | chat_id | updated_date|
37
40
  +----+-------------+---------+-------------+
38
- | 1 | こんにちは | 1 | 2016-07-27 |
41
+ | 3 | さようなら | 3 | 2016-07-29 |
39
42
  | 2 | こんばんは | 2 | 2016-07-28 |
40
- | 3 | さようなら | 3 | 2016-07-29 |
43
+ | 1 | こんにちは | 1 | 2016-07-26 |
41
44
  +----+-------------+---------+-------------+
42
45
 
43
46
  ###発生している問題

6

分かり易く変更

2016/07/29 14:31

投稿

hiroppii
hiroppii

スコア38

title CHANGED
File without changes
body CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  chatテーブルのデータ
8
8
  +----+-------------+
9
- | id | messa |
9
+ | id | messa |
10
10
  +----+-------------+
11
11
  | 1 | こんにちは |
12
12
  | 2 | こんばんは |

5

分かり易く変更

2016/07/29 13:52

投稿

hiroppii
hiroppii

スコア38

title CHANGED
File without changes
body CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  chatテーブルのデータ
8
8
  +----+-------------+
9
- | id | messa |
9
+ | id | messa |
10
10
  +----+-------------+
11
11
  | 1 | こんにちは |
12
12
  | 2 | こんばんは |

4

分かり易く変更

2016/07/29 13:51

投稿

hiroppii
hiroppii

スコア38

title CHANGED
File without changes
body CHANGED
@@ -22,7 +22,7 @@
22
22
  | 3 | 2016-07-29 |
23
23
  +---------+-------------+
24
24
 
25
- 結合後のデータ
25
+ 結合後のデータでは、下記のように取得したいのですが、
26
26
  +----+-------------+---------+-------------+
27
27
  | id | messa | chat_id | updated_date|
28
28
  +----+-------------+---------+-------------+
@@ -31,6 +31,15 @@
31
31
  | 1 | こんにちは | 1 | 2016-07-27 |
32
32
  +----+-------------+---------+-------------+
33
33
 
34
+ order byとgroup byを併用すると、下記のようになってしまします。
35
+ +----+-------------+---------+-------------+
36
+ | id | messa | chat_id | updated_date|
37
+ +----+-------------+---------+-------------+
38
+ | 1 | こんにちは | 1 | 2016-07-27 |
39
+ | 2 | こんばんは | 2 | 2016-07-28 |
40
+ | 3 | さようなら | 3 | 2016-07-29 |
41
+ +----+-------------+---------+-------------+
42
+
34
43
  ###発生している問題
35
44
  ```
36
45
  order byとgroup byを併用する時には、サブクエリを使えば良いのはわかったのですが、テーブルの内部結合をした場合にはどう書いたらいいのかわからずに困っています。

3

分かり易く変更

2016/07/29 13:48

投稿

hiroppii
hiroppii

スコア38

title CHANGED
File without changes
body CHANGED
@@ -4,6 +4,33 @@
4
4
  テーブルは、「chat」「chat_messa」と言うテーブルを作りました。
5
5
  「chat」の「id」と「chat_messa」の 「chat_id」で結合しました。
6
6
 
7
+ chatテーブルのデータ
8
+ +----+-------------+
9
+ | id | messa |
10
+ +----+-------------+
11
+ | 1 | こんにちは |
12
+ | 2 | こんばんは |
13
+ | 3 | さようなら |
14
+ +----+-------------+
15
+
16
+ chat_messaテーブルのデータ
17
+ +---------+-------------+
18
+ | chat_id | updated_date|
19
+ +---------+-------------+
20
+ | 1 | 2016-07-27 |
21
+ | 2 | 2016-07-28 |
22
+ | 3 | 2016-07-29 |
23
+ +---------+-------------+
24
+
25
+ 結合後のデータ
26
+ +----+-------------+---------+-------------+
27
+ | id | messa | chat_id | updated_date|
28
+ +----+-------------+---------+-------------+
29
+ | 3 | さようなら | 3 | 2016-07-29 |
30
+ | 2 | こんばんは | 2 | 2016-07-28 |
31
+ | 1 | こんにちは | 1 | 2016-07-27 |
32
+ +----+-------------+---------+-------------+
33
+
7
34
  ###発生している問題
8
35
  ```
9
36
  order byとgroup byを併用する時には、サブクエリを使えば良いのはわかったのですが、テーブルの内部結合をした場合にはどう書いたらいいのかわからずに困っています。

2

分かり易く変更

2016/07/29 13:45

投稿

hiroppii
hiroppii

スコア38

title CHANGED
File without changes
body CHANGED
@@ -12,7 +12,7 @@
12
12
  ###該当のソースコード
13
13
  ```mysql
14
14
  テーブルの内部結合なしなら、これで出来ました。
15
- select * from (select * from chat_messa order by updated_date desc) A group by chat_id
15
+ select * from (select * from chat_messa order by updated_date desc) as subquery group by chat_id order by id desc
16
16
 
17
17
  テーブルの内部結合をした場合が分かりません。
18
18
 
@@ -20,7 +20,7 @@
20
20
 
21
21
  ###試したこと
22
22
  テーブルの内部結合なしなら、これで出来ました。
23
- select * from (select * from chat_messa order by updated_date desc) A group by chat_id
23
+ select * from (select * from chat_messa order by updated_date desc) as subquery group by chat_id order by id desc
24
24
 
25
25
  ###補足情報(言語/FW/ツール等のバージョンなど)
26
26
  mysql5.5

1

分かり易いように変更

2016/07/29 13:27

投稿

hiroppii
hiroppii

スコア38

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,5 @@
1
1
  ###前提・実現したいこと
2
- mysqlで、テーブルの内部結合をし、カラムでグループ化し、最新レコードを取得したいです。
2
+ mysqlで内部結合をし、order byとgroup byを併用す書き方が知りたいです。
3
3
 
4
4
  テーブルは、「chat」「chat_messa」と言うテーブルを作りました。
5
5
  「chat」の「id」と「chat_messa」の 「chat_id」で結合しました。