轉自: http://www.cnblogs.com/trampt/archive/2008/05/21/1203723.html
User表
UserId UserName
1 test
2 myName
3 hello
Type表
TypeId TypeName
1 三年制大专
2 五年制大专
3 中专
User_Type表
ID UserId TypeId Nums
1 1 1 5
2 1 2 3
3 2 1 2
4 2 3 6
5 3 1 10
6 3 2 1
7 3 3 8
我想得出的查询结果是
UserName 三年制大专 五年制大专 中专
test 5 3 0
myName 2 0 6
hello 10 1 8
是个交叉表的查询.用的数据库是Access
要得到这样的结果,可以使用Access中的交叉查Transform
首先,我们必须用左连接查询出
UserId UserName TypeId TypeName Nums因为User和Type表是通过User_Type表建立的联系
左连接查询如下:
将结果查询出来之后 就用到transform进行交叉查询.
select [Users].[UserName] as 地区负责人 from (([Users] left join [User_Type] on [Users].UserId=[User_Type].UserId) left join [Type] on [User_Type].TypeId=[Type].TypeId) GROUP BY [Users].UserName
PIVOT [Type].TypeId)
这样结果就出来了......