Problem counting records

Problem counting records

am 30.11.2007 11:18:28 von Sir Hystrix

Hi,

I am struggling with a simple query, but I just don't see it.
I have the following example table.

Table Messages
ID Subject Reply_to
1 A 0
2 Ax 1
3 A 1
4 B 0
5 By 4
6 C 0

The table holds new messages as well as replies to messages.
Messages with Reply_to = 0 are top messages, the other messages are
replies to a top message. The subject of a reply message does not
necessarily have to be the same as the subject of the top message.

What I would like to have returned is this: a list of messages where
Reply_to = 0 and the number of replies to this message.

ID Subject Num_replies_to
1 A 2
4 B 1
6 C 0

Any assistance would be greatly appreciated.

Re: Problem counting records

am 30.11.2007 13:13:08 von Manfred Sorg

Did you think of this:

select t1.ID, t1.Subject, count(1) as Num_replies_to
from tbl t1
left join tbl t2
on t2.Reply_to=t1.ID
where t1.Reply_to=0
group by t1.ID, t1.Subject

Bye, Manfred

Re: Problem counting records

am 30.11.2007 13:16:42 von Dan Guzman

> What I would like to have returned is this: a list of messages where
> Reply_to = 0 and the number of replies to this message.

A subquery like the example below is one method.

SELECT
m.ID,
m.Subject,
(SELECT COUNT(*)
FROM dbo.Messages
WHERE Reply_to = m.ID
) AS Num_replies_to
FROM dbo.Messages AS m
WHERE Reply_to = 0

--
Hope this helps.

Dan Guzman
SQL Server MVP

"Sir Hystrix" wrote in message
news:474fe374$0$22307$ba620e4c@news.skynet.be...
> Hi,
>
> I am struggling with a simple query, but I just don't see it.
> I have the following example table.
>
> Table Messages
> ID Subject Reply_to
> 1 A 0
> 2 Ax 1
> 3 A 1
> 4 B 0
> 5 By 4
> 6 C 0
>
> The table holds new messages as well as replies to messages.
> Messages with Reply_to = 0 are top messages, the other messages are
> replies to a top message. The subject of a reply message does not
> necessarily have to be the same as the subject of the top message.
>
> What I would like to have returned is this: a list of messages where
> Reply_to = 0 and the number of replies to this message.
>
> ID Subject Num_replies_to
> 1 A 2
> 4 B 1
> 6 C 0
>
> Any assistance would be greatly appreciated.

Re: Problem counting records

am 30.11.2007 14:30:08 von Sir Hystrix

Dan Guzman wrote:
>> What I would like to have returned is this: a list of messages where
>> Reply_to = 0 and the number of replies to this message.
>
> A subquery like the example below is one method.
>
> SELECT
> m.ID,
> m.Subject,
> (SELECT COUNT(*)
> FROM dbo.Messages
> WHERE Reply_to = m.ID
> ) AS Num_replies_to
> FROM dbo.Messages AS m
> WHERE Reply_to = 0
>

I knew it was simple. It had to be simple. I just didn't see it.
Many thanks to both Dan and Manfred.

Cheers.