gpt4 book ai didi

sql - Count(),其中计数的项目是连接回另一个表的

转载 作者:行者123 更新时间:2023-12-03 01:06:30 25 4
gpt4 key购买 nike

我很确定我可以用这篇文章的标题做得更好。我不知道如何将这个问题缩小为一个工作标题......

我有两张 table 。帐单项目和子项目。

子项目:

SubItemId    ItemId    MasterItemId
-----------------------------------
1 50 10
2 50 11
3 60 10
4 60 12
5 70 10

账单项目:

BillItemId    ItemId
---------------------
1 10
2 11
3 50
4 60
5 70

好的,现在,我需要知道 BillItems 是否包含任何属于多个 MasterItem 的子项的项目,其中 MasterItem 也在 BillItems 表内。我知道这听起来很令人困惑,所以我举一个例子:

项目 50 是项目 10 和项目 11 的子项目。项目 10 和项目 11 都在 BillItems 表中。因此,我需要第 50 项显示在查询中。

项目 60 是项目 10 和项目 12 的子项。项目 10 位于 BillItems 表中,但项目 12 不在。所以我不希望 Item 60 显示在查询中。

项目 10 和 11 不是子项目中的子项目。所以我不希望它出现在查询中。

编辑:

使用上述数据,所需的输出将很简单:

ItemId
------
50

最佳答案

我相信这就是您正在寻找的:

SELECT si.ItemId
FROM SubItems si
WHERE EXISTS (SELECT 1 -- This EXISTS may be omitted if SubItems.ItemId has an enforced FOREIGN KEY reference to BillItems.ItemId
FROM BillItems bi
WHERE bi.ItemId = si.ItemId)
AND EXISTS (SELECT 1
FROM BillItems bi
WHERE bi.ItemId = si.MasterItemId)
GROUP BY si.ItemId
HAVING COUNT(DISTINCT si.MasterItemId) > 1;

关于sql - Count(),其中计数的项目是连接回另一个表的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42234636/

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