0

对不起,荒谬的问题标题。我不知道如何概括它。

我需要在我的评论留在我没有创建的帖子上之后出现的评论列表。

我正在使用postgres。我的帖子表结构:

CREATE TABLE posts (
    id integer NOT NULL,
    parent_id integer DEFAULT (-1),
    msg character varying(140),
    user_id integer,
    create_dte numeric(10,0) DEFAULT 0
);

只能有一级评论。原始帖子的parent_id值为-1。评论有parent_id一个原始帖子的id

我可以对我没有创建的帖子发表评论:

select p1.id, p1.msg 
from   posts p1 
where  p1.user_id = MY_USER_ID 
and    p1.parent_id in (
    select p2.id 
    from   posts p2 
    where  p2.parent_id = -1 
    and    p2.user_id != MY_USER_ID)

有人可以给我一个关于如何选择具有相同parent_id 和更大的帖子的提示create_dte吗?

4

2 回答 2

1
select 
    posts.*
from 
    posts
        inner join
    (
        select parent_id, MAX(create_dte) lastpostdate
        from posts 
        where user_id=2
        group by parent_id
    ) lastpost
        on posts.parent_id = lastpost.parent_id
        and posts.create_dte>lastpost.lastpostdate
于 2012-11-08T09:36:52.950 回答
0

我使用上面@podiluska 的答案作为此解决方案的起点:

select
    posts.*
from
    posts
        inner join
        (
            (
                select h1.parent_id, min(h1.create_dte_timestamp) as min_date
                from posts h1
                where
                    h1.parent_id != -1 and
                    h1.user_id = USER_ID and
                    h1.parent_id not in
                    (
                        select h2.id
                        from posts h2
                        where h2.id = h1.parent_id and h2.user_id = USER_ID
                    )
                    group by h1.parent_id
            )
        ) lastpost
        on posts.parent_id = lastpost.parent_id

where
    posts.create_dte_timestamp > lastpost.min_date and
    posts.user_id != USER_ID
于 2012-11-09T08:00:29.863 回答