如何在Slick中对聚合查询的结果执行连接?

我正在尝试以下操作,尝试计算项目的使用次数,然后查找5个最常用项目的详细信息:

val q = itemUses
        .groupBy(_.itemID)
        .map { case (id, uses) => (id, uses.length)}
        .sortBy(_._2.desc).take(5)
val q2 = q.join(items).on(_._1 === _.itemID)
db.run(q2.result).map { result =>
  result.map(r => (r._2, r._1._2))
}

代码类型检查,但是当我运行代码时,我收到错误:

未找到“X2.X6”列; SQL查询:选择x2.x3,x2.x4,x5 . “ITEM_ID”,... from(选择“ITEM_ID”为x3,将“(1)”作为x4从“ITEM_USES”组按“ITEM_ID”按顺序排列(1) )desc limit 5)x2,“ITEMS”x5,其中x2.x6 = x5 . “ITEM_ID”[42122-191]

[...以上是ITEMS表中的数据列,为简洁起见,不包括在内]

我不知道Slick在生成条件或连接时从哪里获取x2.x6标识符 . 看起来它只是决定生成一个新的标识符 . 有任何想法吗?