2010-04-30 43 views
2

我嘗試在Access中執行3表連接,它不起作用。可能嗎?是否可以在MS-Access中執行3表連接?

+1

你試過什麼SQL沒有用? – 2010-05-02 21:35:32

+0

參考此https://stackoverflow.com/questions/19367565/access-sql-inner-join-with-multiple-tables – 2017-10-14 00:10:33

回答

1

是的,這是可能的:

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 B.c = C.c 
+1

如何/爲什麼這是'非常非常糟糕'?我一直以這種方式構建查詢長達20年,從來沒有遇到任何問題 - 也許你可以充分詳細地解釋你的批評,以便我們理解你的觀點,從而做出我們自己明智的決定......? – 2010-04-30 14:28:47

+0

Jet/ACE將隱式聯接優化爲與等效顯式聯接完全相同,因此通常不會因使用隱式聯接而受到任何懲罰。注意我常說「我經常」 - 我認爲在可能的情況下顯式連接是可取的,因此只有在需要時才使用隱式連接(或者不太複雜)。 – 2010-04-30 21:23:19

+0

我還是好奇。除了語法偏好外(爲了清楚起見,我可以看到支持顯式連接語法的論據),根據我的經驗,這是個人喜好問題,是否有任何RDBMS引擎比隱式連接更成功地優化顯式連接,或者提供了一些他們使用其他優勢?我不是'反對'明確的連接,我只想知道爲什麼我是一個非常非常不好的人使用隱式連接發佈示例。如果我一直在做錯了二十年,爲了Xods的緣故,有人告訴我和我們所有人爲什麼! – 2010-05-01 09:22:10

5

我曾經有一個問題,當我試圖

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 
+2

Jet/ACE SQL的JOIN語法總是需要括號來連接兩個以上的表。如果您在Access QBE中執行連接,您將始終得到正確的結果。 – 2010-05-02 21:35:00

8

所有不同類型的多表連接是在SQL的其他味道可被允許在MS-訪問/噴氣機。例如,這裏有一個連續三個表層次的例子(多一點現實世界比其他的答案在這裏):

SELECT 
    x.FirstName, 
    x.Surname, 
    r.RegionName, 
    c.CountryName 
FROM 
    (Customer x LEFT JOIN Region r 
    ON r.ID=x.RegionID) 
    LEFT JOIN Country c 
    ON c.ID=r.CountryID 

還是你想知道如何使用MS-Access中的可視設計做?

1

訪問可以完成大多數類型的連接(除了完整的外部連接)如果你正在做一個模糊的外部連接,我想知道你的3表連接嗎?看看這個知識庫文章的解釋

support.microsoft.com/kb/124937

相關問題