多表联合查询中的棘手问题,非高手莫进!100分送上。
tttk 2005-10-08 11:30:53 (1) bankcode(id, name) (银行机构表)
(2) data1 (id, bid, uploaded, ...) (数据1)
(3) data2 (id, bid, uploaded, ...) (数据2)
(4) data3 (id, bid, uploaded, ...) (数据3)
其中:data1, data2, data3 中的bid对应bankcode中的id字段。uploaded表示日期。
查询要求:根据bid字段统计出所有银行机构在指定时间内各数据表的统计。
结果结构如下:
id(银行编号), name(银行名称), data1_count, data2_count, data3_count
(其中dataX_count表示对应数据表dataX中某日期段的计数统计)
下面是我使用的查询语句,但是非常耗时,而且结果并不精确。
select u.bid, data1_count=count(d1.id), data2_count=count(d2.id), data3_count=count(d3.id)
from bankcode b
left join data1 d1 on d1.bid=b.id and d1.uploaded >='2005-9-1'
left join data2 d1 on d2.bid=b.id and d2.uploaded >='2005-9-1'
left join data3 d3 on d3.bid=b.id and d3.uploaded >='2005-9-1'
group by b.id
非常苦恼,请高手指点。