0

最初のデータベースには次のものがあります。

OwnerID、FName、LName

2番目のデータベースには次のものがあります。

OwnerID、PolicyName、Owner2ID、Owner3ID、Owner4ID、Owner5ID、Owner6ID、Owner7ID

したがって、特定のポリシーには複数の所有者がいます。私の質問は、複数の所有者を持つ各ポリシーのすべての行を返すAccessでクエリを設計するにはどうすればよいですか。たとえば、ポリシー1のOwnerID、Owner2ID、Owner3IDに、最初のデータベースに基づくIDが入力されているとします。どうすれば戻ることができますか:

OwnerID、ポリシー名Owner2ID、ポリシー名Owner3ID、ポリシー名

ポリシー名は同じですが、1つのレコードが複数の所有者であるため、すべての所有者がクエリに一覧表示されます。

4

1 に答える 1

0

最初にデータを正規化する場合は、任意の数のクエリを実行できます。

SELECT a.policyname,
   a.ownerid
FROM   (SELECT policyname,
           ownerid
    FROM   policies
    UNION ALL
    SELECT policyname,
           owner2id
    FROM   policies
    UNION ALL
    SELECT policyname,
           owner3id
    FROM   policies
    UNION ALL
    SELECT policyname,
           owner4id
    FROM   policies
    UNION ALL
    SELECT policyname,
           owner5id
    FROM   policies
    UNION ALL
    SELECT policyname,
           owner6id
    FROM   policies
    UNION ALL
    SELECT policyname,
           owner7id
    FROM   policies) AS a; 

たとえば、カウントは次のとおりです。

SELECT a.policyname,
   Count(a.ownerid) AS CountOfOwnerID
FROM   (SELECT policyname,
           ownerid
    FROM   policies
    UNION ALL
    SELECT policyname,
           owner2id
    FROM   policies
    UNION ALL
    SELECT policyname,
           owner3id
    FROM   policies
    UNION ALL
    SELECT policyname,
           owner4id
    FROM   policies
    UNION ALL
    SELECT policyname,
           owner5id
    FROM   policies
    UNION ALL
    SELECT policyname,
           owner6id
    FROM   policies
    UNION ALL
    SELECT policyname,
           owner7id
    FROM   policies) AS a
WHERE (((a.OwnerID) Is Not Null))
GROUP BY a.PolicyName;

「フラット」クエリを保存し、保存したクエリを参照して、他のより複雑なクエリを作成することもできます。

于 2012-09-25T17:03:43.960 に答える