主题:[讨论]access数据库多表查询的问题
一个数据库里有表A 和 表B,现在希望查询出表A的部份字段(一条记录即可),表B里的某字段A的第一条和最后一条,某字段B的最大值,某字段C的总和。查询结果返回为一个新的表recordset
.
表A的字段如下
A1 A2 A3
张三 20 abc
李四 21 def
王二 23 ghi
表B的字段如下:
id B1 B2 B3
1 15 45 60
2 18 48 62
3 13 59 75
4 89 56 82
表A与表B没有相关联的字段。表B中的ID字段可排序(order by ),反映了表B里各行记录的先后顺序.
如果希望返回结果集的字段结构为:表A中张三的记录的所有字段,表B中B1的第一行(firstB1,表B中B1的最后一行(lastB1),表B中B2的最大值(maxB2),表B中B3的总和(sumB3).
我是这么写的:
select A1,A2,A3,(select top 1 B1 from B) as firstB1,(select top 1 B1 from B order by id desc) as lastB1,(select max(B2) from B ) as maxB2,(select sum(B3) from B) as sumB3 from A where A1='张三'
虽然可以按要求完成,但感觉其中包含了多次查询操作,怕影响运行效率。各位有什么更好的办法?
.
表A的字段如下
A1 A2 A3
张三 20 abc
李四 21 def
王二 23 ghi
表B的字段如下:
id B1 B2 B3
1 15 45 60
2 18 48 62
3 13 59 75
4 89 56 82
表A与表B没有相关联的字段。表B中的ID字段可排序(order by ),反映了表B里各行记录的先后顺序.
如果希望返回结果集的字段结构为:表A中张三的记录的所有字段,表B中B1的第一行(firstB1,表B中B1的最后一行(lastB1),表B中B2的最大值(maxB2),表B中B3的总和(sumB3).
我是这么写的:
select A1,A2,A3,(select top 1 B1 from B) as firstB1,(select top 1 B1 from B order by id desc) as lastB1,(select max(B2) from B ) as maxB2,(select sum(B3) from B) as sumB3 from A where A1='张三'
虽然可以按要求完成,但感觉其中包含了多次查询操作,怕影响运行效率。各位有什么更好的办法?