假设我有两个表,“父母”和“孩子”. Parent-to-Child是一个很多:很多关系,通过标准的交叉引用表实现.
我想查找使用sql的给定Child组的所有成员引用的Parent的所有记录(特别是MS sql Server的T-sql; 2005语法是可接受的).
例如,假设我有:
>列表项目
>父爱丽丝
>父鲍勃
>查理儿童参考爱丽丝,鲍勃
> Child David引用了Alice
>儿童夏娃参考鲍勃
我的目标是:
>如果我有Child Charlie,我希望结果集包括Alice和Bob
>如果我有Child Charlie和David,我希望结果集包括Alice和NOT Bob.
>如果我有孩子查理,大卫和夏娃,我希望结果集包含任何人.
解决方法
依赖于数字技巧(其中父子链接的数量=子节点数,父节点链接到所有子节点):
SELECT Parent.ParentID,COUNT(*) FROM Parent INNER JOIN ChildParent ON ChildParent.ParentID = Parent.ParentID INNER JOIN Child ON ChildParent.ChildID = Child.ChildID WHERE <ChildFilterCriteria> GROUP BY Parent.ParentID HAVING COUNT(*) = ( SELECT COUNT(Child.ChildID) FROM Child WHERE <ChildFilterCriteria> )
原文地址:https://www.jb51.cc/mssql/78726.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。