如何查询Access数据库记录

有一张配件信息表,(字段分别为:配件ID,配件品牌,配件型号,配件备注等字段)一张电脑信息表(字段分别为:电脑ID,电脑品牌,电脑型号,电脑配置),其中电脑信息表中的电脑配置字段格式为:配件ID,数量,质保(不同电脑可能配置的配件也不一样多,也就是说这个字段是动态生成的,可能有5个配件,也可能有10个,20个)。现在要查询电脑信息表中电脑配置字段中包含有AMD X2 250 CPU的电脑个数,并显示出来。配件ID,数量,质保之间用分隔符标明。
感谢各位,可能是我没有把问题说清楚,我这个是ASP来访问的,而且电脑配置字段不是你们所理解的是一个固定长度的字段,而是一个备注字段,该字段的数据要访问话可能字符为:100001,12,36;100002,10,1;...这种格式,而且每条记录中都不一定是一样的,就好比你们的电脑有些有显示器,有些没有显示器,有些有显卡,有些没有一样。查询的时候要将该字段的每一组分号前第一个逗号前的6位代码取出来比较

其实有很多不同的。具体的如下。
1、自动增加字段需要重写。在access中经常使用的自动编号字段,导入到mssql后,他并不是自增型的int,需要手工设置,把导入后的自动编号字段的标识的“否”改为“是”,“种子”和“递增量”都为“1”,才能成为自动编号。
2、所有的默认值都丢失了。主要是数字类型和日期类型
3、所有now(),time(),date()要改成getdate()
4、所有datediff('d', time1, time2)要改成datediff(day, time1, time2)
5、所有datediff('ww', time1, time2)要改成datediff(week, time1, time2)
6、所有datediff('d', time1, time2)要改成datediff(day, time1, time2)
7、在mssql server中,有许多保留字,在access中是没有的,当你把数据导入到mssql的时候,问题就出来了。mssql在导入的时候,会自动给这些字段(包括数据库中的表名)加上“[字段名]”,因此,你必须修改你的脚本,把相应的字段名字(或者表名字)加上中括号,或改变字段名字为不是mssql的保留字
8、在用access关于时间的使用,大家喜欢使用“select * from aaaa while time="now()”这样的sql语句,然而,在mssql中没有“now()”这个函数,而是使用“getdate()”,所以,所有的sql语句中的“now()”必须换成“getdate()”。
9、日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对
SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。
10、转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。有时用smalldatetime型时,转化失败,而用datetime型时,转化成功
11、isnull(rowname)要改成rowname = null
12、CursorType要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能显示不完整
13、备注类型要通过cast(column as varchar)来使用
14、true/false类型不能使用,要变为1/0
15、对此两种数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:"delete * from user where id=10",而对SQL SERVER数据库进行删除是用:"delete user where id=10".
16、在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用
17、在access的sql语句中的时间使用变量查询的时候,大家一般使用"select * from aaaa while time=#"变量名"#",在mssql中是不行的,他的语法是“select * from aaaa while time='"变量名"'"”。(意思是让你把日期时间变量当成字符串来使用)
18、原来ASP里的“DELETE * FROM ……”要改为“DELETE FROM ……”
19、有可能rs.update失败,修改成update 表名 set 字段=‘值’ 这样通过
20、access里面除法可以使用"\"或者"/",MSSQL里面只能使用"/"
21、在SqlServer中建立主键
22、如果还有问题用:rs.open sql,conn,3,2试试
有什么想了解更多的,到 看看,那里挺多文章的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-13
1.将这两个表拖到查询中。
2.将配件表中的配件ID与电脑信息表中的配件ID建立一对多的关系。
3.再将电脑配置、电脑ID、配件ID、数量和质保字段拖到查询字段中。并选择群组功能。
4.在电脑配置的条件下输入“*AMD X2 250 CUP*”。群组规则选择“where”。
5.在数量栏下选择“SUM”,其它如电脑ID等字段下先选择"Group by".
以上几步可以得出明细。
至于电脑的台数请统计上面不同电脑ID的个数。可以再做一次如上查询,但仅留配置字段与电脑ID字段,群组(去掉多余ID)。再在此基础上创建一个群组查询,查询电脑ID字段,群组后使用计数功能得出台数。
第2个回答  2011-01-15
要使用交叉查询
首先你表要增加一个字段,叫“购买序数”,就是购买第一次是1,第二次是2,...
TRANSFORM last(表.交货数量)
SELECT 表.用户
FROM 表
where 表.购买序数<=10
GROUP 表.用户
PIVOT 表.购买序数;
这个查询是:
1:查处所有购买序数在10以内的所有记录(这10次当然是最近的三次),
2:把查出的记录按照用户分组
3:将够买序数作为列标题,求出每个用户在各自10次内的各自购买数量
例如:查询结果
用户 1次, 2 次,3次, 4次, 5次, 6 次,7次, 8 次,9 次,10 次

张 11 , 0, 12, 23 , 24 , 5 , 67 , 88 ,91, 5
李 4 , 5 , 1 , 8 , 6, 10 , 23, 0, 0 , 0

结果的意思是张用户在最近10次购买记录内第一次购买了11个,第二次购买了0个,第三次购买了12个......
李用户在10次内第一次购买了4个.....
我给你弄了半天,也只能做到查出你表内所有用户最近10次购买记录的“购买数量”
不能够查出购买记录的所有字段,想必我的查询是最符合你的意思的了
如果你非要查出所有字段,我建议你用编程序的方法,设置数组来做,如果光靠查询,估计够呛

给分吧,哈哈。。。。。。。。。。
第3个回答  2011-01-15
你问的问题涉及到数据库设计的技巧,而且是很经典的。(全部原创)
设计如下:
配件信息表:记录每个配件的信息
电脑信息表:记录电脑信息(不包含电脑配置信息哦)
(这两张表是独立的哦,下面一张表才把它们关联起来)
电脑配件信息统表
关键字段包括:电脑信息表中的电脑ID,配件信息表中的配件ID
以上完成数据库设计。
记录电脑A的所有配置举例:
电脑信息表中记录电脑A基本信息,电脑配件信息统表记录所有相关配件ID(有一个配件就有一条记录,根据ID可以去配件信息表查找该配件详细信息,而每台电脑可能有5条配件按记录也可能有6条,很灵活)

当3个表建立关系,可多表查询后,想要什么结果集都很轻松。
第4个回答  2011-01-13
用SELECT语句,网上有语法大全,如果要查的信息在多个表里使用连接查询