小编典典

获取表A中对表B的引用的行数

sql

我剩下两个表,“设备”和“单元”。设备定义设备的类型,单元是唯一的设备,它指向设备表中的一行,并定义其类型。

我现在正在寻找一种解决方案,以从“设备”中选择每种设备类型,并计算指向该设备的设备数量。我目前的解决方案面临的问题是

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中实现此计数?


阅读 177

收藏
2021-04-14

共1个答案

小编典典

您的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

2021-04-14