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
);

コメントのレベルは1つだけです。元の投稿のaparent_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 に答える