SQL-оператор выглядит так:
select posts.id, posts.title
from posts
inner join (select distinct post_id,created_at
from comments
order by created_at DESC limit 5
) as foo
on posts.id=foo.post_id
order by foo.created_at DESC;
Я хочу получить выражение rails 3 sql, эквивалентное приведенному выше.
То, что я попробовал, дано ниже:
Следующий SQL-запрос дает аналогичный результат.
select distinct post_id, created_at
from comments
order by created_at DESC limit 5
@temp = Comment.select('distinct(comments.post_id),created_at').order('created_at DESC').limit(5)
Я попытался соединить эту производную таблицу @temp с таблицей posts, чтобы получить posts.title
Я попробовал это, но не получилось.
@temp2 = @temp.joins('posts')
Итак, как мне объединить таблицу сообщений с производной таблицей @temp?
Table "public.posts"
Column | Type | Modifiers
-------------+------------------------+----------------------------------------------------
id | integer | not null default nextval('posts_id_seq'::regclass)
title | character varying(100) | not null
content | character varying(500) | not null
created_at | date |
updated_at | date |
tags | character varying(55) | not null default '50'::character varying
category_id | integer | not null default 1
Indexes:
"posts_pkey" PRIMARY KEY, btree (id)
комментарии
Table "public.comments"
Column | Type | Modifiers
------------+------------------------+-------------------------------------------------------
id | integer | not null default nextval('comments_id_seq'::regclass)
post_id | integer | not null
name | character varying(255) | not null
email | character varying(255) | not null
content | character varying(500) | not null
created_at | date |
updated_at | date |
Indexes:
"comments_pkey" PRIMARY KEY, btree (id)
посты модель, has_many :comments
, комментарии модель, belongs_to :post