获取 table A 中引用 table B 的行数
Get count of rows in table A that have a reference to table B
我将加入两个 table,'device' 和 'unit'。设备定义了设备的类型,一个单元是一个唯一的设备,它指向设备中的一行table,定义了它的类型。
我现在正在为 'device' 中的每种设备类型搜索 select 的解决方案,并计算有多少单元指向该设备。我目前的解决方案遇到的问题,
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
。
我将加入两个 table,'device' 和 'unit'。设备定义了设备的类型,一个单元是一个唯一的设备,它指向设备中的一行table,定义了它的类型。
我现在正在为 'device' 中的每种设备类型搜索 select 的解决方案,并计算有多少单元指向该设备。我目前的解决方案遇到的问题,
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
。