質問編集履歴

2

テーブルの設計について追記

2022/09/24 08:06

投稿

illaoi
illaoi

スコア1

test CHANGED
File without changes
test CHANGED
@@ -10,10 +10,14 @@
10
10
  ...(その他のカラム)
11
11
 
12
12
  comments(テーブル名)
13
+ ・id
13
14
  ・chatspace_id
14
15
  ・body
15
16
  ・created_at
16
17
  ...(その他のカラム)
18
+
19
+ 各chatspaceに複数のコメントが投稿されるという設計になっています。
20
+ (chatspace_idが同一のcommentsのレコードが複数存在する。)
17
21
 
18
22
  ### 実現したいこと
19
23
  LINEのトーク一覧画面のような表示を作るために、

1

「最新」の定義と、試したことを記載しました。ご指摘ありがとうございます。他にも不備があればご指摘いただければ幸いです。

2022/09/24 08:01

投稿

illaoi
illaoi

スコア1

test CHANGED
File without changes
test CHANGED
@@ -18,10 +18,30 @@
18
18
  ### 実現したいこと
19
19
  LINEのトーク一覧画面のような表示を作るために、
20
20
  SQLで各chatspaceの情報(全てのカラム)と、
21
+ 各chatspace中(comments.chatspace_idが同じレコード)の最新(comments.created_atが最大のレコード)の
21
- 最新のcomments.bodyとcomments.created_at AS commented_atを取得したいです。
22
+ comments.bodyとcomments.created_at AS commented_atを取得したいです。
22
23
 
23
- JOINやサブクエリ等、関係しそうな情報調べたのですが、実現できなかったのでご教示いただきたいです。
24
+ JOINやサブクエリ等、関係しそうな情報調べ試したのですが、実現できなかったのでご教示いただきたいです。
24
25
  よろしくお願いいたします。
26
+
27
+ ### 試したこと
28
+ ・commentsテーブルで、GROUP BY chatspace_idで、idとMAX(created_at)を取得する。次に、これをサブクエリとしてchatspaceの情報を取得。
29
+
30
+ サブクエリの、
31
+ ```SQL
32
+ SELECT chatspace_id, body, MAX(created_at) FROM comments GROUP BY chatspace_id;
33
+ ```
34
+ の部分で、sql=only_full_group_byが必要というエラーが発生。
35
+ (bodyを指定しなければ取得可能。)
36
+
37
+ ・INNER JOINで結合する
38
+  →comments.created_atが最大のレコードのみを取得することができない(GROUP BYを使うとsql=only_full_group_byが必要というエラーが発生)
39
+
40
+ ・サブクエリとしてcommentsテーブルを取得しする。このときにWHERE句で>(greater than sign)を使って最大値のみにする。
41
+
42
+ うまくいかなかったのですが、
43
+ 参考にしたサイトを見失ってしまい、エラーを含め再現できなくなってしまいました。
44
+ (docker上で試し、downしてしまったのでログも辿れませんでした)
25
45
 
26
46
  ### 補足情報(FW/ツールのバージョンなど)
27
47
  mysql