0

次の質問がありますが、これについてお手伝いできるかもしれません。ここでも同様の質問がされているのを見つけましたが、それを機能させるための効果的な方法を実際に理解することはできません.

私は、Access データベースを使用している顧客のために、このアプリケーションに取り組んでいます。

  1. 互いに多対多の関係にある2つのテーブルがあります。1 つのテーブルは Grants で、別のテーブルは Key_People です。

  2. 多対多の関係をサポートするために、Key_People_To_Grants という別のテーブルを作成しました。

  3. ここでの例を簡単にするために: 私の Grant テーブルには次が含まれています: GrantID と GrantName 私の Key_People テーブルには次のものが含まれています: KeyPersonID と KeyPersonFName と KeyPersonLName 私の Key_People_To_Grants テーブルにはもちろん次のものが含まれています: KeyPersonID と GrantID

  4. このクエリで LEFT JOIN を使用してすべての助成金を取得しようとしていますが、うまく機能します。Key_People_To_Grants テーブルにある助成金と、必要に応じて Key_People にまだリンクされていない他の助成金を取得します。これは私が使用しているクエリです:

    SELECT Grants.*, Key_People.firstName, Key_People.lastName FROM (Grants LEFT JOIN Key_People_To_Grants ON Grants.grantID = Key_People_To_Grants.grantID) LEFT JOIN Key_People ON Key_People_To_Grants.keyPersonID = Key_People.personID;

このクエリの唯一の問題は、JOIN に関する Web 上の多くの投稿でわかったように、特定の Grant が複数の Key_People に割り当てられている場合、重複した Grants レコードが返されることです。私は Distinct を使用しようとしました (以下のクエリに記載されているように)、Grants テーブルから情報を選択する場合にのみ機能しますが、Key_People.firstName と Key_People.lastName の情報も要求するとすぐに、Distinct はもちろん機能しますうまくいかない。

SELECT DISTINCT Grants.*, Key_People.firstName, Key_People.lastName
FROM (Grants LEFT JOIN Key_People_To_Grants ON Grants.grantID =
Key_People_To_Grants.grantID) LEFT JOIN Key_People ON 
Key_People_To_Grants.keyPersonID = Key_People.personID;

返された重複情報を取り除く方法について何かアドバイスはありますか?

どうもありがとう

4

1 に答える 1