我留下了两个表,“设备”和“单元”。设备定义了设备的类型,单元是一个唯一的设备,它指向设备表中的一行,定义其类型。
我现在正在寻找一种解决方案,从“设备”中选择每种设备类型,并计算有多少个单元指向该设备。我在当前解决方案中遇到的问题,
SQL:
SELECT device.*, COUNT(unit.id)
FROM device LEFT JOIN unit ON device.id = unit.device_id GROUPBY device.id
Scala Slick:
def devicesWithUnitCount = for {
(device, unit) <- TableQuery[TDDevice] joinLeft TableQuery[TDUnit]
on (_.id === _.deviceID)
groupBy (_._1)
} yield (device, unit.size)
即使没有指向设备类型的单位,我得到的计数结果至少为 1。
如何在 SQL 中实现此计数,或者最好是在 Slick 中实现此计数?
最佳答案
您的 SQL 对于您想要执行的操作是正确的。 Slick 可能会生成如下查询:
SELECT device.*, COUNT(device.id)
-----------------------^
FROM device LEFT JOIN
unit
ON device.id = unit.device_id
GROUP BY device.id;
也许有一种方法可以让它计算device_id
,它明确来自unit
。
关于mysql - 获取表 A 中引用表 B 的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32813118/