SQL多表联合查询(Access数据库表)

摘要:
根据SQL语法,可以通过联接运算符实现多个表查询。根据SQL语法规则,编写以下代码:1.内部查询。版本2记录集句柄=外部数据库1.查询'+“where…”

条件:Access数据库的三个表,a表、b表、c表,三个表结构不同,其中都有字段ID,a表为主表,其中的ID不一定b表、c表中都存在,建立此三个表的联合查询。

根据SQL语法,通过连接运算符可以实现多个表查询。连接可以在Select 语句的FROM子句或Where子句中建立,在FROM子句中指出连接时有助于将连接操作与Where子句中的搜索条件区分开来。   SQL-92标准所定义的FROM子句的连接语法格式为:

FROM join_table join_type join_table   [ON (join_condition)]

其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表操作的连接又称做自连接。    join_type 指出连接类型,可分为三种:内连接、外连接和交叉连接。内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种。外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接(FULL OUTER JOIN或FULL JOIN)三种。与内连接不同的是,外连接不只列出与连接条件相匹配的行,而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行。

前提:假设已存在外部数据库,并且已经打开包含a表、b表、c表三表的Mdb数据库。根据SQL语法规则,写出如下代码:

1. 内查询(查询三个表中均存在的ID记录,任何一个表中不存在的id将均被过滤掉)

.版本 2

记录集句柄 = 外部数据库1.查询 (“select * from a表 inner join b表 on a表.id=b表.id inner join c表 on a表.id=c表.id ” )'+ “ where ……”) ' where 条件暂时省略

2. 外查询(left join ,列出左表中的全部ID,不管b、c表中有无该ID)

.版本 2

记录集句柄 = 外部数据库1.查询 (“select * from a表 left join b表 on a表.id=b表.id left join c表 on a表.id=c表.id ” )'+ “ where ……”) ' where 条件暂时省略

可是运行结果均为查询失败,如果仅仅两个表,查询则成功,三个或三个以上的表就会失败。

经过一天的捉摸,终于弄明白了问题原因,问题不在SQl,也不在易语言,而是没弄明白Access对SQL的支持,将上述代码改为如下代码,问题解决!

.版本 2

记录集句柄 = 外部数据库1.查询 (“select * from (a表 inner join b表 on a表.id=b表.id) inner join c表 on a表.id=c表.id ”) ' + “ where ……”) ' where 条件暂时省略

.版本 2

记录集句柄 = 外部数据库1.查询 (“select * from (a表 left join b表 on a表.id=b表.id) left join c表 on a表.id=c表.id ”) ' + “ where ……”) ' where 条件暂时省略

如果有四张表,可以写为:

.版本 2

记录集句柄 = 外部数据库1.查询 (“select * from ((a表 inner join b表 on a表.id=b表.id) inner join c表 on a表.id=c表.id) inner join d表 on a表.id=d表.id ”) ' + “ where ……”) ' where 条件暂时省略

转自:http://blog.csdn.net/qq110216/archive/2008/11/06/3234944.aspx

免责声明:文章转载自《SQL多表联合查询(Access数据库表)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇(十七)VMware Harbor 垃圾清理Jar包版本查看方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

.net 中dapper实现事务的三种方式总结

.net 中实现事务查询的三种方式 1.TransactionScope  通过创建TransactionScope  对象然后包裹connection对象执行相关查询操作,完成    此种方式可以用于分布式事务操作,当链接不同数据库时,通过简单配置可以实现不同数据库的事务操作,当使用单机查询时(即只有一个数据库并且与应用服务器在同一台电脑时,不需要做额外...

MYSQL常用命令集合(转载)

文章出处:http://www.cnblogs.com/q1ng/p/4474501.html 1.导出整个数据库mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1)mysqldump -u wcnc -p smgp_apps_wcnc >...

Oracle 11g与12c的审计详解

最近遇到一些脚本诱发的审计相关BUG,感觉有必要重新梳理一下11g与12c的审计模式,于是根据官网修正了一下以前的一篇笔记这里发出来。 一、审计功能的开启: SQL> show parameter audit --主要有以下四个参数: AUDIT_TRAIL(default:DB) AUDIT_FILE_DEST(default:ORACLE_...

用javaweb写一个注册界面,并将数据保存到后台数据库(全部完成)(课堂测试)

一、题目:WEB界面链接数据库 1.考试要求:       1登录账号:要求由6到12位字母、数字、下划线组成,只有字母可以开头;(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母、数字组成。(1分) 3性别:要求用单选框或下拉框实现,选项只有“男”或“女”;(1分) 4学号:要求八位数字组成,前四位为“2018”开头,输入自...

ActiveRecord

1 概述         ActiveRecord 是 JFinal 最核心的组成部分之一,通过 ActiveRecord 来操作数据库,将极大地减少代码量,极大地提升开发效率。 2 ActiveRecordPlugin         ActiveRecord 是作为 JFinal 的 Plugin 而存在的,所以使用时需要在 JFinalConfig...

使用shell从DB2数据库导出数据

使用shell脚本根据输入的用户名,数据库名,密码从DB2数据库导出数据 (1)a.sh脚本如下 #!/usr/bin/bash read -p "please input your DBNAME: " DBNAME read -p "please input your username: " username read -p "please inp...