2012-09-25 47 views
0

第一个数据库有以下几点:访问多个业主一个记录

OWNERID,FName参数,LName的

第二个数据库具有以下内容:

OWNERID,PolicyName,Owner2ID,Owner3ID,Owner4ID,Owner5ID,Owner6ID ,Owner7ID

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

OWNERID,策略名称 Owner2ID,策略名 Owner3ID,策略名称

所以相同的策略名称,但因为一个记录作为多个所有者,它会列出所有的人都在一个查询。

回答

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; 

您还可以保存“平”查询并参考保存的查询来构建其他更复杂的查询。