gpt4 book ai didi

元素数大于1时join对面的mysql

转载 作者:行者123 更新时间:2023-11-29 06:19:34 27 4
gpt4 key购买 nike

我需要做与内连接相反的事情。

例如,我有表“TypeComponent”。我添加了 MaxAllowed 列

IDTypeElement    Type           MaxAllowed
Type1 battery 1
Type2 temperature 1
Type3 pressure 3

我有一台变送器,其中只有 1 个电池、1 个温度和 3 个压力元件

ID    IDTransmitter   IDTypeElement   
1 A Type1
2 A Type2
3 A Type3
4 A Type3
5 A Type3

6 B Type1
7 B Type3

当我们将一个组件添加到发射器时,我需要能够删除我们已有的 TypeElement。例如,发射器“B”,我希望能够在我的列表框中仅获得允许的组件。在这里,我的意思是,列表框必须只包含“Type2”(温度)和“Type3”(压力),因为我们只允许有一个“Type1”(电池),而我们已经有了一个。另一方面,我们可以有 3 个“Type3”(压力),而我们只有一个。

所以,我尝试使用该查询

SELECT IDTypeElement from typeelement
WHERE IDTypeElement not in (SELECT IDTypeElement FROM transmitter WHERE IDTransmitter="B")

我的问题是,我希望能够获取“Type3”,因为我们允许有 3 次“Type3”,但是通过该查询,我只能得到“Type2”...有没有办法告诉限制一个元素?有人可以帮帮我吗?

希望你能理解我的问题(和我的英语)。

如果我以 IDTranmistter: B 为例,使用类似于上面的查询,我希望在我的列表框中有:“Type2”和“Type3”

最佳答案

像下面这样的东西应该可以工作:

Select e.IDTypeElement
from TypeComponent e LEFT JOIN
(
select IDTransmitter, IDTypeElement, count(*) as used
from Transmitter
group by IDTransmitter,IDTypeElement
) t
on e.IDTypeElement = t.IDTypeElement
and t.IDTransmitter = 'B'
where (e.MaxAllowed-ifnull(t.used,0))>0

请检查 sqlfiddle @ http://sqlfiddle.com/#!9/c8743/5

关于元素数大于1时join对面的mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34009567/

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