繁体   English   中英

计数未确定相互关系的条目

[英]Counting entries where relationship to each other is not determined

我想计算数据库中所有与一个人有特定关系的条目列表,但我需要按它们之间的关系进行计数-换句话说,它们被列为主要对象的儿子和女儿,兄弟姐妹家里的人-我需要计算兄弟姐妹的数量。

我的方法是尝试计算所有有一个或多个儿子或女儿的家庭,或任何有一个儿子和女儿的家庭,或有一个兄弟和一个姐妹,一个或多个兄弟或一个以上的姐妹的家庭。 但是,当我尝试将其放入SQL时,我什么也没有。

SELECT FirstName, Surname 
FROM individuals
WHERE (RelationshipToHead = 'Son' AND RelationshipToHead = 'Daughter') 
   OR (RelationshipToHead = 'Son' AND RelationshipToHead = 'Son') 
   OR (RelationshipToHead = 'Daughter' AND RelationshipToHead = 'Daughter') 
   OR (RelationshipToHead = 'Brother' AND RelationshipToHead = 'Sister') 
   OR (RelationshipToHead = 'Sister' AND RelationshipToHead = 'Sister') 
   OR (RelationshipToHead = 'Brother' AND RelationshipToHead = 'Brother')

这仅返回包含儿子,兄弟或姐妹的所有条目-而不是每个家庭中每个都有一个以上的条目。

您能提出一个更好的查询吗?

where子句仅比较每一行中的值,这就是为什么查询的行为不理想。 我建议:

SELECT count(distinct AddressID) HouseholdsWithSiblings, 
       sum(NumberOfSiblings) TotalSiblings
FROM   (SELECT AddressID, count(*) NumberOfSiblings 
        FROM individuals
        WHERE RelationshipToHead in ('Son','Daughter')
        GROUP BY AddressID
        HAVING count(*) > 1
        UNION ALL
        SELECT AddressID, count(*)+1 NumberOfSiblings 
        FROM individuals
        WHERE RelationshipToHead in ('Brother','Sister')
        GROUP BY AddressID) v;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM