zoukankan      html  css  js  c++  java
  • SQL多表联合查询(Access数据库表)

    条件: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 条件暂时省略


    问题很简单,想不到位则很头疼,为了众弟兄少走弯路,故尔拿出分享!是踩还是顶,随大家心意!

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/qq110216/archive/2008/11/06/3234944.aspx

  • 相关阅读:
    Bug
    [转]C# 向web网站GET、POST 数据
    使用JavaScript触发ASP.NET Validator验证
    Asp.net 布尔运算符
    HTML 后退功能JS
    [转]C# 获取硬盘序列号 Volume Serial Number
    ASP.NET中,Gridview如何将源数据中的
    显示成回车

    ASP.NET 验证控件
    与或非的运算法则
    [转]WinForm开发,窗体显示和窗体传值相关知识总结
  • 原文地址:https://www.cnblogs.com/bingege/p/2446224.html
Copyright © 2011-2022 走看看