一个表关联多个表,那些表都是统计的,有没有好的方法实现。该如何处理

一个表关联多个表,那些表都是统计的,有没有好的方法实现。
本帖最后由 inghot 于 2014-08-15 11:02:40 编辑
有三个表,a b c 
a为主表
b c为a表对应的某类型的计数表,如下图:
a表
一个表关联多个表,那些表都是统计的,有没有好的方法实现。该如何处理
b表
一个表关联多个表,那些表都是统计的,有没有好的方法实现。该如何处理
c表
一个表关联多个表,那些表都是统计的,有没有好的方法实现。该如何处理
我需要统计a表中所有用户对应的pnum和tnum,我分开统计如下:
一个表关联多个表,那些表都是统计的,有没有好的方法实现。该如何处理
我要合并在一个结果集中要怎么用
难道只能分开统计,然后再JOIN一下吗?
最终效果如下:
一个表关联多个表,那些表都是统计的,有没有好的方法实现。该如何处理
所有脚本如下:
CREATE TABLE [dbo].[c](
[id] [int] NULL,
[tnum] [int] NULL
) ON [PRIMARY]
GO
INSERT [dbo].[c] ([id], [tnum]) VALUES (1, 7)
INSERT [dbo].[c] ([id], [tnum]) VALUES (2, 6)
INSERT [dbo].[c] ([id], [tnum]) VALUES (3, 5)
INSERT [dbo].[c] ([id], [tnum]) VALUES (1, 2)
INSERT [dbo].[c] ([id], [tnum]) VALUES (2, 2)

GO
CREATE TABLE [dbo].[b](
[id] [int] NULL,
[pnum] [int] NULL
) ON [PRIMARY]
GO
INSERT [dbo].[b] ([id], [pnum]) VALUES (1, 2)
INSERT [dbo].[b] ([id], [pnum]) VALUES (3, 4)
INSERT [dbo].[b] ([id], [pnum]) VALUES (4, 1)
INSERT [dbo].[b] ([id], [pnum]) VALUES (1, 1)
INSERT [dbo].[b] ([id], [pnum]) VALUES (3, 1)

GO
CREATE TABLE [dbo].[a](
[id] [int] NULL,
[txt] [varchar](50) NULL
) ON [PRIMARY]
GO
INSERT [dbo].[a] ([id], [txt]) VALUES (1, N'张三')
INSERT [dbo].[a] ([id], [txt]) VALUES (2, N'李四')
INSERT [dbo].[a] ([id], [txt]) VALUES (3, N'王五')
INSERT [dbo].[a] ([id], [txt]) VALUES (4, N'赵六')


分开统计语句:
select a.id,a.txt,SUM(b.pnum) pnum
from a
left join b
on a.id=b.id
group by a.id,a.txt

select a.id,a.txt,SUM(c.tnum) tnum
from a
left join c
on a.id=c.id
group by a.id,a.txt


麻烦了,谢谢。
------解决方案--------------------

select a.id,a.txt,SUM(c.tnum) tnum,SUM(b.pnum) pnum
from a
left join c 
on a.id=c.id
left join b
on a.id=b.id
group by a.id,a.txt

这样?
------解决方案--------------------
直接两个LEFT JOIN不就好了?
------解决方案--------------------
用1楼的方法就可以了
------解决方案--------------------
引用:
搞错了,一个要用SUM,一个要用COUNT这样的有没有办法
如下
select a.id,a.txt,count(c.tnum) tnum,sum(b.pnum) pnum
from a
left join c 
on a.id=c.id
left join b
on a.id=b.id
group by a.id,a.txt

查询出来的结果为:结果是不正确的
一个表关联多个表,那些表都是统计的,有没有好的方法实现。该如何处理


这个只能分别求了然后再JOIN 不然会出问题的