【问题标题】:Laravel SQL relationLaravel SQL 关系
【发布时间】:2020-10-29 10:12:47
【问题描述】:

我的表格是这样的

我有几个设备。例如设备 1、设备 2、设备 3 等。 每个设备都进入一个套件。每个活动套件都有属性 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,则该设备不再包含在套件中。但这不起作用。

【问题讨论】:

  • 你为什么不使用模型关系
  • 我试过了,但我不知道具体该怎么做。我也试过这个 SQL:SELECT d.*, SUM(k.active) as sumactive FROM devices AS d LEFT JOIN devicekits AS dk ON dk.id_device = d.id LEFT JOIN kits as k ON k.id = dk.id_kit WHERE sumactive = 0 GROUP BY d.id; 但我得到一个错误:#1054 - Unknown column 'sumactive' in 'where clause'

标签: sql laravel relation


【解决方案1】:

如果我正确理解您的问题,我相信您正在寻找这样的东西:

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)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-22
    • 2017-01-11
    • 1970-01-01
    • 2015-08-06
    • 2013-04-19
    • 2015-11-13
    相关资源
    最近更新 更多