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

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

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

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

Ruby on Rails

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

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

Q&A

解決済

1回答

163閲覧

(ActiveRecord)テーブルを結合させたい

widget11

総合スコア221

Ruby

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

Ruby on Rails

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

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

0グッド

0クリップ

投稿2018/12/09 12:50

以下のような同じ属性、構造を持った掲示板のようなテーブルが3つあるとします。

#TableA |id| text |created_at| |1|こんにちは|2018-12-03 12:16:05| |2|こんばんは|2018-12-10 14:16:08| #TableB |id| text |created_at| |31|おはよう!|2018-12-01 23:12:05| |35|おやすみ!|2018-12-02 25:16:18| #TableC |id| text |created_at| |56|さようなら|2018-12-03 12:16:03| |57|こきげんよう|2018-12-08 14:16:03|

idはランダムな数字でオートインクリメントのような類のものは使用していないとします。
この3つのテーブルをまとめてcreated_atの日時が最新の順番で3件表示したいという場合どのようにすればよいでしょうか?
join句等を調べたのですが、内部結合や外部結合とはちょっとやりたいことが違うようです。。。。

<% BoardsAll.each do |latestcomment| %> <%= boards.text %> <%= boards.created_at %> <% end %>

のような形で表示するとして、このBoardsAllというの変数に配列のような形で3つのテーブル中身のcreated_atを比較し、一番新しい投稿の3件を入れたいです。
上のテーブルの中身ですと、idの31,35,56の行のフィールドがBoardsAllの変数の中に入っているイメージです。

わかりにくい質問で申し訳ございませんが宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

とりあえず素朴な方法としては、

  • 各テーブルごとに、レコードの最新3件分を取得する
  • それらを合わせて合計9個のARオブジェクトの配列にする
  • 改めてRubyでソートして、新しい順に3件取り出す

というのでどうでしょうか。

ちなみに純粋にDB(SQL)でやるにはUNIONというのを使うことになりそうですが、ActiveRecordから使うと余計に難しくなりそうなので、あまりおすすめできない気がします…。

投稿2018/12/11 17:13

takahashim

総合スコア1877

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

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

widget11

2018/12/12 17:51

なるほどそのようなやり方がありましたか!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問