需要帮助在 MS Access 中实施完全外部联接

2024-05-09

我无法让查询在 Access 中正常工作。我需要 dbo_cardpurchases 和 dbo_vendors 上的完整外部联接,以便所有所有供应商都将出现在查询中,无论是否在该供应商处进行购买。但 Access 不支持完全外部联接。我还能怎样做呢?

SELECT dbo_vendors.name, 
       Iif([fundingsourceid] = 10, [amount], "")        AS Credit, 
       Iif(( [fundingsourceid] = 2 ) 
            OR ( [fundingsourceid] = 3 ), [amount], "") AS EBT, 
       Iif([fundingsourceid] = 4, [amount], "")         AS [Match], 
       dbo_cardpurchases.updateddate, 
       dbo_markets.marketid 
FROM   (((dbo_cardpurchases 
          LEFT JOIN dbo_vendors 
                 ON dbo_cardpurchases.vendorid = dbo_vendors.vendorid) 
         LEFT JOIN dbo_cardfundings 
                ON dbo_cardpurchases.cardfundingid = 
                   dbo_cardfundings.cardfundingid) 
        INNER JOIN dbo_marketevents 
                ON dbo_cardpurchases.marketeventid = 
                   dbo_marketevents.marketeventid) 
       INNER JOIN dbo_markets 
               ON dbo_marketevents.marketid = dbo_markets.marketid 
ORDER  BY dbo_vendors.name; 

正如维基百科关于连接的文章中提到的here http://en.wikipedia.org/wiki/Join_%28SQL%29#Full_outer_join, 对于样本表

[员工]

LastName    DepartmentID
----------  ------------
Heisenberg            33
Jones                 33
Rafferty              31
Robinson              34
Smith                 34
Williams            NULL

和[部门]

DepartmentID  DepartmentName
------------  --------------
          31  Sales         
          33  Engineering   
          34  Clerical      
          35  Marketing     

完全外连接

SELECT *
FROM employee FULL OUTER JOIN department
    ON employee.DepartmentID = department.DepartmentID;

可以使用三个 SELECT 语句的 UNION ALL 来模拟。所以,在 Access 中你可以这样做

SELECT dbo_employee.LastName, dbo_employee.DepartmentID,
       dbo_department.DepartmentName, dbo_department.DepartmentID
FROM dbo_employee
INNER JOIN dbo_department ON dbo_employee.DepartmentID = dbo_department.DepartmentID

UNION ALL

SELECT dbo_employee.LastName, dbo_employee.DepartmentID,
       NULL, NULL
FROM dbo_employee
WHERE NOT EXISTS (
    SELECT * FROM dbo_department
             WHERE dbo_employee.DepartmentID = dbo_department.DepartmentID)

UNION ALL

SELECT NULL, NULL,
       dbo_department.DepartmentName, dbo_department.DepartmentID
FROM dbo_department
WHERE NOT EXISTS (
    SELECT * FROM dbo_employee
             WHERE dbo_employee.DepartmentID = dbo_department.DepartmentID)

但是,由于您在 SQL Server 中使用链接表,因此您只需使用 Access 传递查询并使用 T-SQL 执行“真正的”FULL OUTER JOIN:

传递查询总是会生成不可更新的记录集,但是针对使用 UNION ALL 的链接表的本机 Access 查询将生成不可更新的记录集,因此为什么不利用仅使用 SQL 的速度和简单性服务器运行查询?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需要帮助在 MS Access 中实施完全外部联接 的相关文章

  • 如何在 SQL Server 2005 Management Studio 中创建 SQL Server 2005 存储过程模板?

    如何在 SQL Server 2005 Management Studio 中创建 SQL Server 2005 存储过程模板 我认为另一个小金块将帮助人们开发并提高数据库开发的效率 当我开发软件解决方案时 我非常喜欢存储过程和函数 我喜
  • T-SQL - 字符串连接

    希望有人可以提供帮助 我是一个新手 SQL 黑客 而且确实很糟糕 我在 SQL Server 2005 上有两个表 TABLE 1 和 TABLE2 TABLE1 COL1 COL2 1 10 2 20 3 30 4 10 4 20 5 2
  • 大表的最佳主键格式

    我正在开发一个 ASP NET 应用程序 它有一些可能很大的数据表 我想知道定义主键的最佳方法是什么 我知道以前已经有人问过这个问题 但由于这是针对特定情况的 所以我认为这个问题是有效的 我在 SQL Server 2008 数据库上使用实
  • T-SQL 相当于 =rand()

    我有几个内容表 我想用随机的文本段落填充它们 在 MS Word 中 我只需输入 rand 即可 我收到三段新鲜的文字 是否有 SQL 脚本 命令可用于使用 t sql 生成随机字典单词 declare Lorem nvarchar max
  • 没有特定表的MSSQL数据库备份

    我需要在 sql 中没有特定表的情况下进行计划备份 因为如果我对该表进行备份 将需要很长时间 我需要从备份中排除一张表 是否可以 如果没有该表 所有表和数据都应该位于数据库中 除了 PRIMARY 文件组之外 您还可以为该表设置一个单独的文
  • 智能感知不工作 SSMS 2014

    我知道有很多关于这个问题的帖子 但是我无法找到解决我的问题的方法 跑步 SMS 2014 with CU1 SSMS 和客户端工具上的版本 10 0 2342 0 Visual Studio 2010 SP1 10 0 40219 1 SP
  • 如何在存储过程中使用名称求和和分组?

    我想对钱列求和 但我想要状态中的组名称和代码 这是存储过程代码 Sql Server 2008 SELECT um upmoney as money um pId as code um FName as name up status as
  • SQL FORMAT 函数错误

    这个SQL select FORMAT lNum from rpt myView 产生以下错误 参数数据类型 varchar 对于格式的参数 1 无效 功能 lNum is a varchar 10 运行 SQL Server 2012 v
  • LINQ to SQL:从位于不同服务器上的两个数据库获取记录

    我需要从两个不同的表中获取记录 数据库位于两个不同的 SQL Server 中 例如 销售数据库位于服务器 1 上 采购数据库位于服务器 2 上 销售和采购数据库都有一些表集 例如销售数据库中的 table1 和采购数据库中的 table2
  • T-SQL 中结果集的幂集(所有组合)

    我需要一个 t sql 代码来获取结果集的幂集 输入示例 ColumnName 1 2 3 Example Output one columns as nvarchar 1 2 3 1 2 1 3 2 3 1 2 3 输出集可能包含重复值
  • MSSQL:如何使用代码编写存储过程创建脚本?

    我正在尝试使用一个数据库中存在但另一个数据库中不存在的 information schema routines 查询存储过程定义列表 SELECT t1 Routine Definition FROM server1 MyDatabase
  • 查询从同一表中的另一条记录获取值并按大于间隙阈值的差异进行过滤

    我将数据导入到 MS Access 中的临时表中 如下所示 我添加了需要使用 SQL 查询计算的 Gap 和 Previous Current 列 间隙阈值 是用户输入或范围提供给查询和例如是 300 GlobalID 对 ItemID 进
  • 从 SQL Server 中的子查询值或其他聚合函数获取平均值

    我有 SQL 语句 SQL Server SELECT COUNT ActionName AS pageCount FROM tbl 22 Benchmark WHERE DATEPART dw CreationDate gt 1 AND
  • TSQL - 执行CLR权限

    我从 CLR net Assembly 获得了一个 sql 过程 该过程在执行时返回错误 Msg 6522 Level 16 State 1 Procedure sp HelloWorld Line 0 A NET Framework er
  • Sql批量复制截断小数

    当我使用批量复制将十进制值从 C DataTable 插入 Sql Server 2005 时 值会被截断而不是四舍五入 DataTable 中的数据类型为 Decimal 数据库中的数据类型为Decimal 19 3 数据表中的值为 1
  • 如何在SQL Compact Edition中导入数据? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我似乎没有找到合适的工具 也没有找到
  • 如何将 SQL 结果存入 STRING 变量?

    我正在尝试获取 C 字符串变量或字符串数 组中的 SQL 结果 是否可以 我需要以某种方式使用 SqlDataReader 吗 我对 C 函数和所有功能非常陌生 曾经在 PHP 中工作 所以如果可以的话请给出一个工作示例 如果相关 我已经可
  • 从VBA中的数组批量插入到sql中

    我正在尝试在 Excel 中构建一个按钮 将所选区域上传到 SQL Server 中的表中 第一行将自动视为列标题 这件事该怎么继续下去呢 我想要的是简单和超快的上传 这是我的想法 我将选择选定的区域 然后将其保存为 txt 文件 然后对其
  • Invoke-Sqlcmd 运行脚本两次

    我遇到了一个非常奇怪的问题并且可以重复 基本上 我使用invoke sqlcmd通过使用 inputfile来调用脚本文件 但是如果脚本文件存在一些执行错误 例如插入到列不应为空的表中 则脚本文件将被执行两次 我也可以从探查器中看到这两个执
  • 如何防止 SQL Server 在导入数据时去除前导零

    A data file被导入到SQL Server桌子 数据文件中的一列是文本数据类型 该列中的值只能是整数 SQL Server 数据库中目标表中的相应列的类型为varchar 100 但在数据导入后 SQL Server 会存储以下值

随机推荐