首页 > 解决方案 > Laravel SQL 关系

问题描述

我的表看起来像这样

在此处输入图像描述

我有几个设备。例如 device1、device2、device3 等。每个设备都转到一个 Kit。每个活动套件都具有属性 active = 1

例如,我在 Kit1 中首先有 device1 和 device2。然后 device1 和 device2 转到 Kit 2。我将 Kit1 设置为 active = 0,而 Kit2 的 active = 1。然后我从 Kit2 中“删除” device1 和 device2。(它仍将在 devicekit 中)。我只将 Kit2 设置为 active = 0。

这是我的问题。我想列出不在套件中的所有设备。因此,如果我对 Devicekit 和 Kit 进行左连接,我想检查是否所有 Kit 都处于活动状态 = 0。

我尝试了类似的东西SUM(kit.active) as activesum,如果activesum为 0,则该设备不再包含在套件中。但这不起作用。

标签: sqllaravelrelation

解决方案


如果我正确理解了您的问题,我相信您会遇到这样的事情:

select * from device d
where id not in (select id_device 
                 from devicekit dk
                 join kit k on dk.id_kit = k.id 
                 where k.active = 1)

这将列出不在任何活动套件中的设备。您可以尝试使用此处创建的示例。


推荐阅读