質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

2回答

1115閲覧

重複したデータの抽出

ginger_0427

総合スコア6

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2018/03/23 22:38

編集2018/03/24 18:24

前提・実現したいこと

Ruby on Railsでscaffoldを使い、ローカルでリスト管理画面を作っているのですが、
MySQLの以下のデータから該当するものを抽出する方法を教えてください。

No Name Date
1 aaa 2018-3-1
2 bbb 2018-3-3
3 aaa 2018-2-25
4 aaa 2018-3-15
5 ccc 2018-1-15
6 bbb 2018-2-18

上記のデータをNameでグルーピングし、その各グループ内でDateの日付が一番最新のもののみを抽出します。
上記の場合は、

No Name Date
2 bbb 2018-3-3
4 aaa 2018-3-15
5 ccc 2018-1-15

となるようにデータを抽出できるようにしたいです。

ActiveRecordを使用してできるようにしたいです。
よろしくお願いします。

追記:
scaffold 実装時と考えてもらって良いです。

controllers/items_controller.rb def index @items = Item.all end views//items/index.html.erb <% @items.each do |item| %> <tr> <td><%= item.no %></td> <td><%= item.name %></td> <td><%= item.date %></td>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2018/03/24 06:00

ある程度実装したコードを質問に追記して下さい。丸投げ以前に、どこまで実装されているか分からないので、回答しようが無いと思われますよ
guest

回答2

0

Nameでグルーピングし、その各グループ内でDateの日付が一番最新のもののみを抽出します。

そのままやりましょう。

ユーザーとしますね。
すごく適当ですよ。

ruby

1 2 users = User.order('Date DESC').group_by(:&name) 3 4 users.values.each do |array| 5 user = array.first 6 puts user.no 7 puts user.date 8 puts user.date 9 end 10 11

投稿2018/03/24 14:38

mikorasu

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

CREATE TABLE文の提示がないので、てきとうですが。

SQL

1SELECT T2.* 2FROM TABLE1 T2 3WHERE EXISTS( 4 SELECT COUNT(*) AS COUNTS, T1.NAME 5 FROM TABLE1 T1 6 WHERE T1.NAME = T2.NAME 7 GROUP BY T1.NAME 8 HAVING COUNT(*) > 1 9 ) ; 10

投稿2018/03/23 22:50

編集2018/03/23 22:59
Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ginger_0427

2018/03/23 23:29

回答ありがとうございます。できれば、activerecordのメソッドを使用した表現を教えていただければ幸いです。よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問