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

質問編集履歴

4

テーブル定義情報などの追加

2020/06/21 02:43

投稿

tttkkm
tttkkm

スコア10

title CHANGED
File without changes
body CHANGED
@@ -50,6 +50,47 @@
50
50
  できればMySQLを用いた再帰クエリの書き方を、MySQLでは難しいのであれば、Railsでの再帰クエリの書き方をご教授いただければ幸いです。またその他の解決法もお待ちしております。
51
51
 
52
52
 
53
+ ### 該当のデータ
54
+ ```sql
55
+ +----------------+--------------+------+-----+---------+----------------+
56
+ | Field | Type | Null | Key | Default | Extra |
57
+ +----------------+--------------+------+-----+---------+----------------+
58
+ | id | bigint | NO | PRI | NULL | auto_increment |
59
+ | name | varchar(191) | NO | | | |
60
+ | content | text | YES | | NULL | |
61
+ | post_image | varchar(191) | YES | | NULL | |
62
+ | parent_post_id | int | NO | | 0 | |
63
+ | upvotes | int | YES | | 0 | |
64
+ | downvotes | int | YES | | 0 | |
65
+ | user_id | bigint | NO | MUL | NULL | |
66
+ | topic_id | bigint | NO | MUL | NULL | |
67
+ | created_at | datetime | NO | | NULL | |
68
+ | updated_at | datetime | NO | | NULL | |
69
+ | score | int | NO | | 0 | |
70
+ +----------------+--------------+------+-----+---------+----------------+
71
+ ```
72
+
73
+ ```csv
74
+ Post id, name, content, parent_post_id, score
75
+ 1,"A","隣接リスト最高!",0,2
76
+ 2,"B","シンプルでいいですよね",1,0
77
+ 3,"C","アンチパターンですよ、経路列挙モデル使いましょう",1,2
78
+ 4,"D","入れ子集合モデルの方が良いですよ",3,1
79
+ 5,"E","こんにちは",0,0
80
+ ```
81
+
82
+ ###望む結果
83
+ topic
84
+ |_ 隣接リスト最高! 2点
85
+ | |_ アンチパターンですよ、経路列挙モデル使いましょう 2点
86
+ | |_ 入れ子集合モデルの方が良いですよ 1点
87
+ | |_ シンプルでいいですよね 0点
88
+ |_ こんにちは 0点
89
+
90
+
91
+
92
+
93
+
53
94
  ### 発生している問題・エラーメッセージ
54
95
 
55
96
  ```
@@ -57,9 +98,20 @@
57
98
  ```
58
99
 
59
100
 
101
+
102
+ ### 補足情報(FW/ツールのバージョンなど)
103
+
104
+ mysql Ver 8.0.20 for Linux on x86_64 (MySQL Community Server - GPL)
105
+ Rails 6.0.3.2
106
+
107
+
108
+
109
+
110
+
111
+ ### 試したこと
112
+
60
113
  ここに問題に対して試したことを記載してください。
61
114
 
62
115
  ### 補足情報(FW/ツールのバージョンなど)
63
116
 
64
- mysql Ver 8.0.20 for Linux on x86_64 (MySQL Community Server - GPL)
65
- Rails 6.0.3.2
117
+ ここにより詳細な情報を記載してください。

3

誤字

2020/06/21 02:43

投稿

tttkkm
tttkkm

スコア10

title CHANGED
File without changes
body CHANGED
@@ -20,8 +20,10 @@
20
20
 
21
21
  などがあり、再帰クエリを使えるのなら、ツリー構造には隣接リストが最も適していると
22
22
  [リンク内容](https://qiita.com/yuyasat/items/1200d7a6b56bae0c6f57#4-3-%E3%83%84%E3%83%AA%E3%83%BC%E6%A7%8B%E9%80%A0%E3%81%AE%E5%90%84%E5%AE%9F%E8%A3%85%E3%81%AE%E6%AF%94%E8%BC%83)
23
+ こちらに書いてあり、またSQL文で書いたほうが高速だと
24
+ [リンク内容](https://hashrocket.com/blog/posts/recursive-sql-in-activerecord)
23
- こちらに書いてあったので、MySQLを8.0にアップデートし再帰クエリを用いようと試みました。
25
+ こちらにあったので、MySQLを8.0にアップデートし再帰クエリを用いようと試みました。
24
- しかしRails内でのSQL文の書き方がわからなかったため、とりあえずRailsの機能を用いて再帰クエリを使おうと、下記のようなコードを書いてみました。
26
+ しかし初心者のため、SQL文に慣れておらず、またRails内でのSQL文の書き方がわからなかったため、とりあえずRailsの機能再帰クエリを使おうと、下記のようなコードを書いてみました。
25
27
 
26
28
  ```rb
27
29
  topics_controller.rb
@@ -45,9 +47,7 @@
45
47
  しかしundefined methodのエラーが出てしまいました。
46
48
  includesを外してみたり、sort_byを外してみたりしたのですが、問題は解決しませんでした。
47
49
  初心者のため、何か根本的な勘違いをしているのだと思うのですが、それがどこなのかがわかりません。
48
- SQL文で書いたほうが高速だと
49
- [リンク内容](https://hashrocket.com/blog/posts/recursive-sql-in-activerecord)
50
- こちらにあったの、できればMySQLを用いた再帰クエリの書き方を、MySQLでは難しいのであれば、Railsでの再帰クエリの書き方をご教授いただければ幸いです。またその他の解決法もお待ちしております。
50
+ できればMySQLを用いた再帰クエリの書き方を、MySQLでは難しいのであれば、Railsでの再帰クエリの書き方をご教授いただければ幸いです。またその他の解決法もお待ちしております。
51
51
 
52
52
 
53
53
  ### 発生している問題・エラーメッセージ

2

誤字

2020/06/20 03:06

投稿

tttkkm
tttkkm

スコア10

title CHANGED
File without changes
body CHANGED
@@ -45,7 +45,9 @@
45
45
  しかしundefined methodのエラーが出てしまいました。
46
46
  includesを外してみたり、sort_byを外してみたりしたのですが、問題は解決しませんでした。
47
47
  初心者のため、何か根本的な勘違いをしているのだと思うのですが、それがどこなのかがわかりません。
48
+ SQL文で書いたほうが高速だと
49
+ [リンク内容](https://hashrocket.com/blog/posts/recursive-sql-in-activerecord)
48
- Railsでの再帰クエリ、もしくはMySQLを用再帰クエリの書き方をご教授いただければ幸いです。
50
+ こちらにあったで、できればMySQLを用いた再帰クエリの書き方を、MySQLでは難しのであれば、Railsでの再帰クエリの書き方をご教授いただければ幸いです。またその他の解決法もお待ちしております。
49
51
 
50
52
 
51
53
  ### 発生している問題・エラーメッセージ

1

誤字

2020/06/20 03:04

投稿

tttkkm
tttkkm

スコア10

title CHANGED
File without changes
body CHANGED
@@ -29,7 +29,9 @@
29
29
  ```
30
30
 
31
31
  ```rb
32
- post.rb
32
+ post.rb
33
+ has_many :children, foreign_key: :parent_post_id, class_name: 'Post'
34
+
33
35
  def descendents
34
36
  self.map do |p|
35
37
  p.children.map do |child|