Re: Help me with this multi-table query

Поиск
Список
Период
Сортировка
От Dean Rasheed
Тема Re: Help me with this multi-table query
Дата
Msg-id 8e2dbb701003231215n4ee2a917o1609ca6e4819ee13@mail.gmail.com
обсуждение исходный текст
Ответ на Help me with this multi-table query  (Nilesh Govindarajan <lists@itech7.com>)
Ответы Re: Help me with this multi-table query
Список pgsql-general
On 23 March 2010 11:07, Nilesh Govindarajan <lists@itech7.com> wrote:
> Hi,
>
> I want to find out the userid, nodecount and comment count of the userid.
>
> I'm going wrong somewhere.
>
> Check my SQL Code-
>
> select u.uid, count(n.nid) nc , count(c.cid) cc from users u left join node
> n on ( n.uid = u.uid ) left join comments c on ( c.uid = u.uid ) group by
> u.uid having u.uid <> 0 order by u.uid;
>

I think you want select u.uid, count(distinct n.nid) nc ,
count(distinct c.cid) cc from ...
otherwise you're counting each node/comment multiple times as the rows in the
join multiply up (note 85 x 174 = 14790).

For big tables, this could start to become inefficient, and you might
be better off
doing your queries 1 and 2 above as sub-queries and joining them in an
outer query.

Regards,
Dean

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Fwd: Before triggers and usage in partitioned tables
Следующее
От: Craig Ringer
Дата:
Сообщение: Re: server-side extension in c++