Mysql 光滑计数(.length/.size)不';I don’我没有按预期工作

Mysql 光滑计数(.length/.size)不';I don’我没有按预期工作,mysql,scala,slick,Mysql,Scala,Slick,我使用下面的代码来实现SQL语句 SQL: SELECT device.*, COUNT(unit.id) AS cnt FROM device LEFT JOIN unit ON device.id = unit.device_id GROUP BY device.id; def devicesWithUnitCount = for { (device, unit) <- TableQuery[TDDevice] joinLeft TableQuery[TDUnit]

我使用下面的代码来实现SQL语句

SQL

SELECT device.*, COUNT(unit.id) AS cnt 
FROM device LEFT JOIN unit ON device.id = unit.device_id GROUP BY device.id;
def devicesWithUnitCount = for {
    (device, unit) <- TableQuery[TDDevice] joinLeft TableQuery[TDUnit] 
                                           on (_.id === _.deviceID) 
                                           groupBy (_._1)
} yield (device, unit.size)
斯卡拉滑溜

SELECT device.*, COUNT(unit.id) AS cnt 
FROM device LEFT JOIN unit ON device.id = unit.device_id GROUP BY device.id;
def devicesWithUnitCount = for {
    (device, unit) <- TableQuery[TDDevice] joinLeft TableQuery[TDUnit] 
                                           on (_.id === _.deviceID) 
                                           groupBy (_._1)
} yield (device, unit.size)
def devicesWithUnitCount=for{

(设备、装置)请参阅Slick文档,其中说明:

groupBy调用后面必须跟一个map调用

所以我想这会对你有好处:

 def devicesWithUnitCount = (
    TableQuery[TDDevice] joinLeft TableQuery[TDUnit] 
      on (_.id === _.deviceID) ) 
    .groupBy (_._1)
    .map{ case (grouped, all) => (grouped, all.map(_._2).size) }