【问题标题】:ms access table relationships - where clausems 访问表关系 - where 子句
【发布时间】:2018-03-05 16:56:58
【问题描述】:

我有两个表正在尝试为其创建关系。

Table_A:
ID_A
Flag (Y/N)

Table_B:
ID_A
ID_B

ID_A 上的两个表链接,其中Table_A.Flag='Y'

有没有办法以这种方式定义关系?

说明: 我使用它可以在 SQL 中完成的事实作为我的问题的基础——我如何将其转换为 ms-access 表关系?

【问题讨论】:

  • 使用 SQL 很容易。不确定 MS Access,因为它试图向您隐藏它是 SQL 的事实。您的 WHERE 有一个 AND:A.ID_A = B.ID_A 和 A.Flag = 'Y'。从表名中取出“表”。是多余的,没有信息。还会是什么?
  • 我知道你可以用 SQL 做到这一点,但谢谢。
  • @duffymo 不确定有关表命名的 cmets 如何帮助发帖者。在示例名称中使用“表格”使其非常易于阅读,即使这不是生产中的最佳实践。
  • 还有什么?这是 SQL。

标签: ms-access join database-design table-relationships


【解决方案1】:

虽然在 MS Access 中构建查询时这当然是可能的,但据我所知,不可能将表关系定义为比 INNER 或 (RIGHT/LEFT) @ 更高级的任何东西987654323@ 加入,有或没有参照完整性。

【讨论】:

    【解决方案2】:

    Access (JET) SQL 不会让您像在其他变体(例如 T-SQL)中那样加入条件。所以你不能做以下事情:

        ON a.ID = b.ID
       AND Flag = 'y'
    

    我可能在 Access-SQL 中解决这个问题的方法是通过像这样编辑 SQL 创建一个子查询:

    SELECT *
      FROM (SELECT * FROM Table_A WHERE Flag = 'y') a
     INNER JOIN Table_B b
        ON a.ID = b.ID
    

    或者通过将“SELECT * FROM Table_A WHERE Flag = 'y'”具体化为 Access 查询并加入它。

    【讨论】:

      猜你喜欢
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      相关资源
      最近更新 更多