Re: A challenge for the SQL gurus out there...

Поиск
Список
Период
Сортировка
От Merlin Moncure
Тема Re: A challenge for the SQL gurus out there...
Дата
Msg-id b42b73150809081849l29b7ef8csa3c1ca2bdf03de18@mail.gmail.com
обсуждение исходный текст
Ответ на Re: A challenge for the SQL gurus out there...  (Gregory Stark <stark@enterprisedb.com>)
Ответы Re: A challenge for the SQL gurus out there...  ("Merlin Moncure" <mmoncure@gmail.com>)
Список pgsql-general
On Sun, Sep 7, 2008 at 6:09 AM, Gregory Stark <stark@enterprisedb.com> wrote:
> "Uwe C. Schroeder" <uwe@oss4u.com> writes:
>
>> I want to get a list looking like
>>
>> forum id    thread_id post_id
>> 1             6       443
>> 2             9       123
>> 3             3       557
> ...
>> It all boils down to me not being able to come up with a query that gives me
>> the latest post per forum_id.
>
> In a situation like this I would probably denormalize the tables slightly by
> adding a form_id key to the individual posts. That would make it hard to ever
> move a thread from one forum to another, though not impossible, but would help
> in this case as well as any other time you want to do an operation on all
> posts in a forum regardless of thread.

<sql guru hat on>

select f.*,
  (
    select (t,
      (
        select p from post p
        where p.thread_id = t.thread_id
        order by post_id desc limit 1
      ))
      from thread t
      where forum_id = f.forum_id
      order by thread_id desc limit 1
  ) as threadpost
  from forum f;

:-)

'thread post' is a nested composite, ((thread), post).

The above will pretty much guarantee a fast query unless the number of
forums is large.  To pull out the composite fields, wrap in a subquery
or (better yet) fire up libpqtypes.

merlin

В списке pgsql-general по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Postgres 8.3.1 RowExclusiveLock With JDBC XA
Следующее
От: "Merlin Moncure"
Дата:
Сообщение: Re: A challenge for the SQL gurus out there...