質問編集履歴

1

説明の追加

2022/01/11 07:21

投稿

siroyuri
siroyuri

スコア10

test CHANGED
File without changes
test CHANGED
@@ -48,13 +48,17 @@
48
48
 
49
49
  ## やりたいこと
50
50
 
51
+ item_informaitonsテーブルのitem_idが重複しているレコード、新規のレコードを別々に取得したい。
52
+
53
+ 重複しているレコード(id: 1,2)のうち、最初のレコード(id: 1)は新規として扱いたい。
54
+
55
+
56
+
57
+ 以下の様な感じです。
58
+
51
59
  > 新規 = item_informationsの(id: 1,3,4)のレコード
52
60
 
53
61
  > 重複 = item_informationsの(id: 2)のレコード
54
-
55
-
56
-
57
- のように、新規のレコード、重複しているレコードを別々に取得したい
58
62
 
59
63
 
60
64
 
@@ -76,7 +80,23 @@
76
80
 
77
81
  ```
78
82
 
83
+ 以下のレコードが取得できています。
84
+
85
+ | id | item_id |
86
+
87
+ | -- | ------- |
88
+
89
+ | 1 | 10 |
90
+
91
+ | 3 | 11 |
92
+
93
+ | 4 | 12 |
94
+
95
+
96
+
97
+
98
+
79
- 重複のレコードの取得をクエリを使用して取得しようとして問題が発生しました。
99
+ 重複のレコードをクエリを使用して取得しようとして問題が発生しました。
80
100
 
81
101
 
82
102
 
@@ -102,50 +122,54 @@
102
122
 
103
123
  ```
104
124
 
105
- 新規のクエリを再利用してNOT INで省けば取得できると考えした
125
+ サブクエリでは以下が取得できてい
106
126
 
127
+ | id | |
128
+
129
+ | -- | -- |
130
+
131
+ | 1 | |
132
+
133
+ | 3 | |
134
+
135
+ | 4 | |
136
+
137
+
138
+
139
+ これをサブクエリとして、NOT INで省けば取得できると考えました。
140
+
107
- 結果として何も取得されませんでした。
141
+ 結果として何も取得されず、空の値が返ってきました。
108
142
 
109
143
 
110
144
 
111
145
 
112
146
 
113
- ## 自分の考え
147
+ ## 疑問点まとめ
114
-
115
- GROUP BYは重複をまとめるだけで、まとめられたデータ自体は残っている?
116
-
117
- だからそのままNOT INで省こうとしたら全てのレコードが省かれたのではないか?
118
148
 
119
149
 
120
150
 
121
-
122
-
123
- ## まめる
151
+ 知りたいこは、**問題があったクエリでは、なぜデータの取得ができなかったのか**です。
124
152
 
125
153
 
126
154
 
127
- 重複のデータ取得に関しては、以下を使用すること実現できると気づいて解決しておりま
155
+ 憶測ですが、
128
156
 
129
- ```rails
157
+ **GROUP BYは重複をまとめるもの。**
130
158
 
131
- ItemInformation.where.not(id: A.pluck(:id))
159
+ **省いているわけではないので、見えなくても(id: 2)のレコードも含まれている?**
160
+
161
+ **だからそのままNOT INで省こうとしたら全てのレコードが省かれたのではないか?**
162
+
163
+ と考えています。
132
164
 
133
165
 
134
166
 
135
- # where.not(カラム名: 指定する値(配列も可能))とすることで、
136
-
137
- # 指定された値が入っているカラムを持つレコードを除外するrailsのコードです。
167
+ ちなみに、重複のデータ取得に関しは、SQLを使用しな解決しております。
138
-
139
- ```
140
-
141
- しかし、
142
168
 
143
169
 
144
170
 
145
- **・ 問題があったクエリなぜデータの取得できったのか**
171
+ 解決はしているの、理由がわからいままだと今後も同じことをしてしまうと思ったので理由を調べています。
146
-
147
-
148
172
 
149
173
  いろいろ調べたのですがこれと言った答えが見つかりませんでした。
150
174
 
151
- 初心者の憶測で終わらせてしまうのは心許ないので、回答していただけると幸いです。
175
+ 初心者の憶測で終わらせてしまうのは心許ないので、理由が分かるかたがいれば回答していただけると幸いです。