Ms-Access
access中查詢多對多關係
我剛剛在 MS Access 中使用三個表創建了多對多關係,如下所示
AE 招聘會 - Struc 包含公司名稱不同的公司列表。
Office Locations - Int 是一個連接表,其中包含在 AE Career Fair - Struc 中出現的所有公司的一列,但根據它們所在的國家/地區重複。
國家包含世界上所有國家的列表。
我能夠查詢出現在某個特定國家/地區的公司。我想更進一步,查詢這種關係並確定哪些公司位於多個國家/地區。根據我目前的設置方式,我真的想不出一種方法來做到這一點。任何人都可以提供有關如何做到這一點的指示嗎?謝謝。
我並沒有真正用 MS Access 做很多事情,但是你可以嘗試這樣的事情,假設
company.id
是主鍵和country.id
是主鍵,並且相應的表分別與locations
throughcompany_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