0

私の Rails アプリケーションでは、最新の投稿を子として持つブログのブロックをレンダリングしたいと考えています。ただし、質問自体はRails固有のものではなく、プレーンSQLの回答が表示されても問題ありません。データ構造は次 のとおりです。postsテーブル、blogsテーブル。それらを外部キーで参照しながらblogs持っています。私がやろうとしていること:blogs.idpostsposts.blog_id

SELECT distinct blogs.id, blogs.* FROM `blogs` INNER JOIN `posts` ON `posts`.`blog_id` = `blogs`.`id` ORDER BY posts.created_at desc, posts.id desc LIMIT 5

しかし、レコードの順序が間違っています。クエリから削除するdistinct blogs.idと、適切な順序が得られますが、結果に投稿が重複しています。このタスクに間違ったアプローチを使用していることは理解しています...しかし、適切なものは何ですか?

前もって感謝します!

4

1 に答える 1

0

これを試して

SELECT blogs.* 
FROM `blogs` 
INNER JOIN 
(
select distinct blog_id
from posts
ORDER BY posts.created_at desc, posts.id desc 
LIMIT 5
) p ON p.`blog_id` = `blogs`.`id`
于 2013-02-14T15:41:29.033 に答える