首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MS Access 2016,用组合键连接多个表

MS Access 2016,用组合键连接多个表
EN

Stack Overflow用户
提问于 2017-08-04 17:58:41
回答 1查看 1.6K关注 0票数 1

大家早上好,

我的第一个问题,如果它存在的话,请原谅一些坏的形式。

我现在有三个表(table1、table2、table3),所有这些表都有一个复合主键(型号、序列号)。其意图是在缔约方之间分割与序列号有关的数据,其中一些数据比另一些数据更有价值,这取决于谁在看它。复合主键共享一对一的关系,t1中的键与t2中的键相关,t2中的键与t3中的键相关。

我正在尝试编写一个查询,通过序列号从所有三个表中提取数据。我的印象是最好的方法是内部连接。到目前为止我的代码是..。

代码语言:javascript
运行
复制
SELECT
    t1.[model-number],
    t1.[serial-number],
    t1.[track],
    t1.[data], --placeholder for data columns
    t2.[data], --placeholder for data columns
    t3.[data] --placeholder for data columns
FROM [table1] t1
LEFT JOIN [table2] t2
    ON t2.[model-number] = t1.[model-number] AND t2.[serial-number] = t1.[serial-number]
LEFT JOIN [table3] t3
    ON t3.[model-number] = t2.[model-number] AND t3.[serial-number] = t2.[serial-number]
WHERE t1.[track] = TRUE
ORDER BY t1.[model-number], t1.[serial-number] DESC;

但是,当我运行查询时,MS Access会给出错误:

查询表达式"“中的语法错误(缺少运算符)。

到目前为止我尝试过的是:

  1. . order =‘order 2’>模数=t2.
  2. 添加/删除t1/t2/t3别名周围的方括号
  3. 完全删除WHERE语句
  4. 在表别名标注前面添加" AS“(即左联接table1作为t1)
  5. 减少所有数据,以便每个表中只有一个字段被引用(以防我在最初尝试中调用的30列中遗漏了一个明显的语法错误)

另外,在我取消错误后,文本光标返回到“t2.[",在第一个左联接的后半部分。

也就是说,我找不到语法错误。我漏掉了什么明显的东西吗?

提前谢谢!!到目前为止,论坛确实帮助我建立了这个数据库。

交流

根据下面的注释,我删除了第二个左联接,因此代码如下:

代码语言:javascript
运行
复制
SELECT
    t1.[model-number],
    t1.[serial-number],
    t1.[track],
    t1.[data], --placeholder for data columns
    t2.[data], --placeholder for data columns
FROM [table1] t1
LEFT JOIN [table2] t2
    ON t2.[model-number] = t1.[model-number] AND t2.[serial-number] = t1.[serial-number]
WHERE t1.[track] = TRUE
ORDER BY t1.[model-number], t1.[serial-number] DESC;

这导致查询运行,因此两个左联接之间发生了一些事情。我加了第二个左加入.

代码语言:javascript
运行
复制
SELECT
    t1.[model-number],
    t1.[serial-number],
    t1.[track],
    t1.[data], --placeholder for data columns
    t2.[data], --placeholder for data columns
    t3.[data]
FROM [table1] t1
LEFT JOIN [table2] t2
    ON t2.[model-number] = t1.[model-number] AND t2.[serial-number] = t1.[serial-number]
LEFT JOIN [table3] t3
    ON t3.[model-number] = t2.[model-number] AND t3.[serial-number] = t2.[serial-number]
WHERE t1.[track] = TRUE
ORDER BY t1.[model-number], t1.[serial-number] DESC;

从SELECT语句中的表中....with一列,它给出了这个错误。在连续的联接子句之间是否缺少语法?

EN

回答 1

Stack Overflow用户

发布于 2019-07-05 07:09:57

我想这背后的逻辑是,每个连接-一个妄想的事情主要是,你“创造”一个新的表,你想要加入。我想这主要是一个作用域问题,access总是希望一个对象表/查询被JOIN子句左边的偏执所包围。一旦你知道你可以加入像那样的5或7个表,一点问题都没有。对于除了内部连接之外的其他任何东西,它们都是必要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45512929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档