Ms-Access

access中查詢多對多關係

  • January 18, 2022

我剛剛在 MS Access 中使用三個表創建了多對多關係,如下所示

在此處輸入圖像描述

AE 招聘會 - Struc 包含公司名稱不同的公司列表。

Office Locations - Int 是一個連接表,其中包含在 AE Career Fair - Struc 中出現的所有公司的一列,但根據它們所在的國家/地區重複。

國家包含世界上所有國家的列表。

我能夠查詢出現在某個特定國家/地區的公司。我想更進一步,查詢這種關係並確定哪些公司位於多個國家/地區。根據我目前的設置方式,我真的想不出一種方法來做到這一點。任何人都可以提供有關如何做到這一點的指示嗎?謝謝。

我並沒有真正用 MS Access 做很多事情,但是你可以嘗試這樣的事情,假設company.id是主鍵和country.id是主鍵,並且相應的表分別與locationsthroughcompany_id和相關country_id

SELECT company.name, country.name
FROM locations
LEFT JOIN company 
ON company.id = locations.company_id
LEFT JOIN country 
ON country.id = locations.country_id
GROUP BY company.name 
HAVING count(locations.country_id) > 1

您可以在不引用任何表的情況下執行此操作,除非Office Locations在 SQL 視圖中手動輸入 SQL 程式碼以進行查詢(您甚至不首先在設計視圖中放置任何內容,只需創建一個空白查詢並轉到 SQL 視圖)。您使用由別名啟用的自聯接:

SELECT a.Company, a.Country
FROM [Office locations] as a
INNER JOIN
   (SELECT Company
   FROM [Office locations]
   WHERE Country = 'India') as b
ON a.Company = b.Company
GROUP BY a.Company
HAVING COUNT(DISTINCT a.Country) > 1

這將返回所有在印度設有辦事處且在至少另一個國家設有辦事處的公司。如果您只想要在多個國家/地區設有辦事處的公司,無論這些國家之一是否是印度,您都會使用:

SELECT Company, Country
FROM [Office locations] 
GROUP BY Company
HAVING COUNT(DISTINCT Country) > 1

引用自:https://dba.stackexchange.com/questions/146719