【发布时间】:2015-09-27 21:38:11
【问题描述】:
我要加入两个表,“设备”和“单元”。 Device 定义了设备的类型,一个单元是一个唯一的设备,它指向设备表中的一行,定义了它的类型。
我现在正在寻找一种解决方案,以从“设备”中选择每种设备类型并计算有多少设备指向该设备。我在当前解决方案中遇到的问题,
SQL:
SELECT device.*, COUNT(unit.id)
FROM device LEFT JOIN unit ON device.id = unit.device_id GROUPBY device.id
Scala 光滑:
def devicesWithUnitCount = for {
(device, unit) <- TableQuery[TDDevice] joinLeft TableQuery[TDUnit]
on (_.id === _.deviceID)
groupBy (_._1)
} yield (device, unit.size)
是我得到的计数结果至少为 1,即使没有指向设备类型的单元。
如何在 SQL 或 Slick 中实现这种计数?
【问题讨论】:
-
使用 deviceid 而不是 device.*?
-
如何解决计数问题?
-
想象一下你会得到一个值为 1,2,someval1,someval2,null.. 的行,其中 1 是设备 ID。这仍然会导致计数为 1
-
但是我需要 device.*提供的信息,我只想另外获取指向device.id的单元数
-
看看答案是否能满足您的需求