Database 访问一条记录中的多个所有者

Database 访问一条记录中的多个所有者,database,ms-access,ms-access-2007,relational-database,Database,Ms Access,Ms Access 2007,Relational Database,第一个数据库具有以下功能: OwnerID、FName、LName 第二个数据库具有以下功能: OwnerID、PolicyName、Owner2ID、Owner3ID、Owner4ID、Owner5ID、Owner6ID、Owner7ID 因此,一个特定的策略有多个所有者。我的问题是如何在Access中设计一个查询,该查询将返回具有多个所有者的每个策略的所有行。例如,假设策略一的OwnerID、Owner2ID、Owner3ID中填充了基于第一个数据库的ID。我如何返回: 所有者ID,策略名称

第一个数据库具有以下功能:

OwnerID、FName、LName

第二个数据库具有以下功能:

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

因此,一个特定的策略有多个所有者。我的问题是如何在Access中设计一个查询,该查询将返回具有多个所有者的每个策略的所有行。例如,假设策略一的OwnerID、Owner2ID、Owner3ID中填充了基于第一个数据库的ID。我如何返回:

所有者ID,策略名称 Owner2ID,策略名称 Owner3ID,策略名称


因此,相同的策略名称,但由于一个记录作为多个所有者,它将在一个查询中列出所有所有者

如果首先对数据进行标准化,则可以运行任意数量的查询:

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;
您还可以保存“平面”查询,并参考保存的查询来构建其他更复杂的查询