Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 可以在MS Access中进行3表联接吗?_Sql_Ms Access - Fatal编程技术网

Sql 可以在MS Access中进行3表联接吗?

Sql 可以在MS Access中进行3表联接吗?,sql,ms-access,Sql,Ms Access,我尝试在Access中进行3表联接,但它不起作用。可能吗 是的,有可能: Select * From A, B, C Where A.a = B.b And A.c = C.c 或 是的,有可能: Select * From A, B, C Where A.a = B.b And A.c = C.c 或 我试过的时候曾经遇到过一个问题 select x, y from A inner join B on k=l inner join C on f=g 这

我尝试在Access中进行3表联接,但它不起作用。可能吗

是的,有可能:

Select *
From A, B, C
Where A.a = B.b
And A.c = C.c

是的,有可能:

Select *
From A, B, C
Where A.a = B.b
And A.c = C.c


我试过的时候曾经遇到过一个问题

select
  x,
  y
from 
  A        inner join
  B on k=l inner join
  C on f=g
这不管用。但它适用于偏执狂:

select
  x,
  y
from ( 
  A          inner join
  B on k=l ) inner join
  C on f=g

我试过的时候曾经遇到过一个问题

select
  x,
  y
from 
  A        inner join
  B on k=l inner join
  C on f=g
这不管用。但它适用于偏执狂:

select
  x,
  y
from ( 
  A          inner join
  B on k=l ) inner join
  C on f=g

MS Access/Jet中允许使用其他类型的SQL中可用的所有各种类型的多表联接。例如,这里有一个直接的三表分层示例(比这里的其他答案更真实):


或者您想知道如何在MS Access中使用可视化设计器吗?

在MS Access/Jet中允许使用其他SQL风格中可用的所有各种类型的多表联接。例如,这里有一个直接的三表分层示例(比这里的其他答案更真实):


或者您想知道如何在MS Access中使用可视化设计器吗?

Access可以执行大多数类型的联接(除了完整的外部联接),我想知道您的3表联接是否执行不明确的外部联接?请看这篇知识库文章以获得解释


support.microsoft.com/kb/124937

Access可以执行大多数类型的联接(除了完整的外部联接),我想知道您的3表联接是否执行不明确的外部联接?请看这篇知识库文章以获得解释


support.microsoft.com/kb/124937

这“非常糟糕”的原因是什么?我以这种方式构造查询已经20年了,从来没有遇到过问题-也许你可以详细解释你的批评,让我们理解你的观点,从而做出我们自己的明智决策…?Jet/ACE优化隐式连接的方式与等效显式连接的方式相同,因此,使用隐式连接通常不会受到惩罚。注意我说过“经常”——我认为显式连接在可能的情况下更可取,所以只有在必要时(或者在不太复杂的情况下)才使用隐式连接。我仍然很好奇。根据我的经验,除了语法偏好(为了清晰起见,我可以看到一个支持显式连接语法的论点)这是一个个人偏好问题之外,是否有任何RDBMS引擎能够比隐式连接更成功地优化显式连接,或者为其使用提供一些其他优势?我并不“反对”显式连接,我只是想知道为什么我是一个非常糟糕的人,因为我发布了一个使用隐式连接的示例。如果二十年来我一直在做错事,看在Xods的份上,有人告诉我和我们所有人为什么!我认为Jet/ACE在某些情况下可以更好地优化显式连接。我认为更可能的是正确使用索引。在编写隐式连接时可能会出现很多错误。另一方面,在JOIN语句中,WHERE子句有一些非常简单的事情,这些事情非常复杂。使用Jet/ACE,当您有两个以上的表时,您会遇到连接中正确参数的所有问题。如果您是手工编写SQL,那么隐式连接可能会更容易。但是我不喜欢手工编写SQL,我之所以选择外部连接的新语法,是因为这是一种含糊不清的语法。您是在字段上而不是在表上加入的。可能会编写不明确的语法,这会引起bug。这是如何/为什么“非常糟糕”?我以这种方式构造查询已经20年了,从来没有遇到过问题-也许你可以详细解释你的批评,让我们理解你的观点,从而做出我们自己的明智决策…?Jet/ACE优化隐式连接的方式与等效显式连接的方式相同,因此,使用隐式连接通常不会受到惩罚。注意我说过“经常”——我认为显式连接在可能的情况下更可取,所以只有在必要时(或者在不太复杂的情况下)才使用隐式连接。我仍然很好奇。根据我的经验,除了语法偏好(为了清晰起见,我可以看到一个支持显式连接语法的论点)这是一个个人偏好问题之外,是否有任何RDBMS引擎能够比隐式连接更成功地优化显式连接,或者为其使用提供一些其他优势?我并不“反对”显式连接,我只是想知道为什么我是一个非常糟糕的人,因为我发布了一个使用隐式连接的示例。如果二十年来我一直在做错事,看在Xods的份上,有人告诉我和我们所有人为什么!我认为Jet/ACE在某些情况下可以更好地优化显式连接。我认为更可能的是正确使用索引。在编写隐式连接时可能会出现很多错误。另一方面,在JOIN语句中,WHERE子句有一些非常简单的事情,这些事情非常复杂。使用Jet/ACE,当您有两个以上的表时,您会遇到连接中正确参数的所有问题。如果您是手工编写SQL,那么隐式连接可能会更容易。但是我不喜欢手工编写SQL,我之所以选择外部连接的新语法,是因为这是一种含糊不清的语法。您是在字段上而不是在表上加入的。编写不明确的语法是可能的,这会引起bug。Jet/ACE SQL的连接语法总是要求两个以上表的连接使用括号。如果在Access QBE中执行联接,您将始终得到正确的结果。Jet/ACE SQL的联接语法始终要求两个以上表的联接使用括号。如果您在Access QBE中执行联接,您将始终得到正确的结果。您尝试过哪些SQL不起作用?请参阅此,您尝试过哪些SQL不起作用?请参阅此