当前位置: 首页 > 面试题库 >

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

燕璞
2023-03-14
问题内容

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

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

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



 类似资料:
  • 我正在尝试在时间戳上连接来自两个表A和B的数据。理想情况下,我希望tableA的每一行都符合unitCode和时间限制,如果tableB中有关联的行,则将其连接,否则假设表B中的颜色已附加,但为空或空。 假设TableA看起来像这样: id |时间戳|项目1 |项目2 |项目3 表B看起来像这样: 同上|时间戳|项目 B1 |项目 B2 因此,数据可能如下所示: 时间戳|itemA1|itemA2

  • 我编写了这个函数,它看起来很有用,但我想知道是否有更干净的解决方案。 奖励问题:我有一个java 8约束,但是后来的版本如何改进它?我想我不再需要使用 ,因为 Java 9 引入了 函数。

  • 问题内容: 我想从桌子上得到一个特殊的结果,我想找出可能的结果!我有一个像这样的表:(idA,idB,val)通过此值: 我想通过以下格式从此表中进行选择: 怎么可能? 注意:我进行了一些搜索,但没有找到任何东西,如果您知道一个好的关键词,这对我很有用。 问题答案: 您可以尝试以下查询: 如果您不知道数量,则可以使用此动态查询: 输出: 看到这个SQLFiddle

  • 我有一张桌子。每行都有一个ID。 我是否可以只使用任何行的ID(不单击)而不使用循环来获取该行的索引? 我的HTML如下所示: 我试过这个: 但它不起作用;我收到一条错误消息说: [ts]类型“HtmleElement”上不存在属性“rowIndex”。

  • 问题内容: 我有两个表:产品和订单。订单通过ProductID引用产品作为外键。我想知道每种产品已售出多少次,包括仅售出一次的产品。我几乎可以使用左联接来使其工作,但是对于所有产品,无论它们是否存在于orders表中,它仍然会为每一行提供一个计数为1的行。 有没有一种方法可以使您最终得到这样的结果? … 等等。 问题答案: 如果您只执行a ,那么您会将没有订单的产品计为1 … ,这将只计算具有非n

  • 问题内容: 我有两张桌子。表和表。两者都有多对多的关系。 表A: 表B: 表AB: 我想要得到的名单,从表S =该有关系 的名单表第。 上表中的示例: 我想所有这些都表的关系小号 1和2,我得到那么3具有这两个表第。 如何使用SQL查询做到这一点? 问题答案: 如果要基于“不作为”列表(而不是“全部”作为)进行选择,请按照以下步骤操作: 用您的列表替换,并在having子句中替换为列表项的数量。