gpt4 book ai didi

sql - 在 SQL 中选择包含所有子项的父记录

转载 作者:行者123 更新时间:2023-12-04 12:50:59 26 4
gpt4 key购买 nike

假设我有两个表,“父”和“子”。父对子是多对多关系,通过标准的交叉引用表实现。

我想使用 SQL(特别是 MS SQL Server 的 T-SQL;2005 语法是可以接受的)查找给定子集的所有成员引用的 Parent 的所有记录。

例如,假设我有:

  • 列表项
  • 家长爱丽丝
  • 家长鲍勃
  • child 查理引用爱丽丝、鲍勃
  • child 大卫引用爱丽丝
  • Child Eve 引用 Bob

  • 我的目标是:
  • 如果我有 Children Charlie,我希望结果集包括 Alice 和 Bob
  • 如果我有 child 查理和大卫,我希望结果集包括爱丽丝和 不是 鲍勃。
  • 如果我有 child 查理、大卫和夏娃,我希望结果集不包含任何人。
  • 最佳答案

    依靠数字技巧(其中父子链接的数量 = 子节点的数量,该父节点链接到所有子节点):

    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>
    )

    关于sql - 在 SQL 中选择包含所有子项的父记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/480742/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com