关于access查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于access查询相关的知识,希望对你有一定的参考价值。

1.以表"学生1"为数据源使用查询设计视图创建一个选择查询,统计出一共有多少学生非北京生人,统计字段别名为"非北京生人",所建查询命名为"查询2"。
2.以表"学生1"为数据源使用查询设计视图创建一个选择查询,统计姓李的同学个数,该字段别名为"李"姓个数,所建查询命名为"查询3"
用select语句怎么书写?谢谢了!

不用写语句,在Access中使用查询功能即可。选择模块左边的查询,选择新建:
1. 选择学生表格在查询中,选择学生和户口所在地两个字段。在户口所在地字段的条件下写:<>北京;再学生所对应的姓名字段。点击运行即可。
2. 选择学生表格在查询中,选择学生,并且在姓名所对应的条件下写:李*
使用群组,在学生所对应的群组选择“COUNT”,在姓名所对应的群组处选择“where”。
最后,点击运行即可。
参考技术A 你的这个数据库本身就是一个错误的设计。
你需要两个表——
表1:人员编号、姓名、单位;
表2:人员编号、年份、培训。

查询:
select * from 表2 left join 表1 on 表2.人员编号 = 表1.人员编号 where 年份 in (2001, 2002, 2007) and 培训 = 0

=======================================================
补充(举个例子):

表1数据
编号 姓名 单位
0001 张三 人事局
0002 李四 海事局

表2数据
编号 年份 培训
0001 2006 YES
0002 2006 YES
0001 2007 YES
0002 2007 NO

0001号员工张三,在2006和2007都有参加培训。
0002号员工李四,只在2006年有参加培训。

表1中的编号为主关键字,表2中编号和年份为复合关键字。
建议你去学一下《数据库系统原理》,设计出好的数据库,才能保证你以后的工作能够正确有效的开展。
====================================================
那需要三个表,把培训信息单独拿出来。

表1:[人员编号]、姓名、单位;
表2:[人员编号]、[培训编号]、参加;
表3:[培训编号]、年份、培训内容。

表1数据
人员编号 姓名 单位
0001 张三 人事局
0002 李四 海事局

表2数据
人员编号 培训编号 参加
0001 0001 YES
0002 0001 YES
0001 0002 YES
0002 0002 NO

表3数据
培训编号 年份 培训内容
0001 2006 扫地
0002 2007 擦桌子

查询:
select 表2.*, 表1.姓名, 表1.单位, 表3.年份, 表3.培训内容 from 表2 inner join 表1 on 表2.人员编号 = 表1.人员编号 inner join 表3 on 表3.培训编号 = 表2.培训编号

如何使用 pyodbc 执行保存在 MS Access 中的查询

【中文标题】如何使用 pyodbc 执行保存在 MS Access 中的查询【英文标题】:How to execute query saved in MS Access using pyodbc 【发布时间】:2016-01-05 14:29:37 【问题描述】:

网上有很多关于如何使用 pyodbc 在 MS Access 2007 中运行查询的提示,但所有这些查询都是在 Python 脚本本身中编码的。我想使用 pyodbc 来调用已经保存在 MS Access 中的查询。我该怎么做?

【问题讨论】:

【参考方案1】:

如果在 Access 中保存的查询是不带参数的简单 SELECT 查询,则 Access ODBC 驱动程序会将其公开为视图,因此您只需像使用表一样使用查询名称:

import pyodbc
connStr = (
    r"Driver=Microsoft Access Driver (*.mdb, *.accdb);"
    r"DBQ=C:\Users\Public\Database1.accdb;"
    )
cnxn = pyodbc.connect(connStr)
sql = """\
SELECT * FROM mySavedSelectQueryInAccess
"""
crsr = cnxn.execute(sql)
for row in crsr:
    print(row)
crsr.close()
cnxn.close()

如果查询是其他类型的查询(例如,带有参数的 SELECT、INSERT、UPDATE...),那么 Access ODBC 驱动程序会将它们公开为存储过程,因此您需要使用 ODBC CALL ... 语法,如在

import pyodbc
connStr = (
    r"Driver=Microsoft Access Driver (*.mdb, *.accdb);"
    r"DBQ=C:\Users\Public\Database1.accdb;"
    )
cnxn = pyodbc.connect(connStr)
sql = """\
CALL mySavedUpdateQueryInAccess
"""
crsr = cnxn.execute(sql)
cnxn.commit()
crsr.close()
cnxn.close()

【讨论】:

代码中缺少一行是import pyodbc。投票 - 因为它对我有用 ;-) @Plirkee - 我添加了import 语句。谢谢。

以上是关于关于access查询的主要内容,如果未能解决你的问题,请参考以下文章

access 不能建立删除查询。

墨者靶场 SQL手工注入漏洞测试(Access数据库)

墨者靶场 SQL手工注入漏洞测试(Access数据库)

MS Access 多连接查询

MS Access 多连接查询

从 Excel VBA 运行嵌套的 Access SQL 查询