Postgresql SQL заявление: не удается получить требуемые последние / последние комментарии, необходимо отобразить отдельный posts.title с последними комментариями - PullRequest
0 голосов
/ 06 декабря 2011

\ d комментариев

                                   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)

Для этого утверждения

select post_id,created_at from comments order by created_at limit 5;

Я получил

 post_id | created_at 
---------+------------
       5 | 2011-07-11
       5 | 2011-07-11
       5 | 2011-07-11
       8 | 2011-07-11
       2 | 2011-07-17
(5 rows)

Но мне нужен такой результат

 post_id | created_at 
---------+------------
       5 | 2011-07-11
       8 | 2011-07-11
       2 | 2011-07-17
(3 rows)

Как мне переписать оператор sql, чтобы получить эти три строки в результате?

\ d сообщений

                                   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)

С этими тремя идентификаторами из этих трех строк мне нужно получить posts.title из таблицы posts. Как я могу написать заявление sql, чтобы получить posts.title с comments.post_id = 5 или 8 или 2?

1 Ответ

1 голос
/ 06 декабря 2011

РЕДАКТИРОВАТЬ: изменение ответа на основе комментария.

 SELECT p.title, q.LatestCommentDate
     FROM (SELECT c.post_id, MAX(c.created_at) AS LatestCommentDate
               FROM comment c
               GROUP BY c.post_id) q
         INNER JOIN posts p
             ON q.post_id = p.id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...