java - 在 SQLite 数据库中实现引用计数之类的东西

标签 java android database sqlite orm

问题涉及两个 SQLite 数据库表: 人员测量

一个人可以有多个测量值,但每个测量值只能有一个人。所以人与测量之间是1:M的关系。

我已经有一个显示所有人的列表。我自己编写的对象关系映射类将persons表中的数据库实体转换为person对象,然后将人名显示在列表中。

现在我必须扩展列表,不仅显示人员姓名,还显示每个人的测量次数。

一个列表条目应如下所示:

Person XY
2 Measurements

一种方法是在显示列表之前为每个人进行单独的 COUNT 查询。然而,这将是一个非常低效且糟糕的解决方案。

另一种方法是向 Persons 表添加一个 ref_count 列,该列必须包含相关测量的数量。

如果感觉关系数据库对于此类问题的结构很糟糕。我应该如何实现该列表?

最佳答案

关系数据库非常适合这种用途。

在查询人员表时,您需要更改查询以包含每个人的测量表中的项目数。像这样的东西;

SELECT PersonName, Count(Measurements.ID) AS NumberOfMeasurements
FROM Persons LEFT JOIN Measurements on Measurements.PersonID = Persons.ID
GROUP BY Persons.ID, Persons.PersonName

这将在结果光标中显示两列,即人员姓名和称为 NumberOfMeasurements 的测量计数。我的 SQL 可能不准确,但计数、连接和分组依据是重要的位。请注意,您从 Persons 表返回的所有字段都必须包含在分组依据中。

参见this详情请见网站

关于java - 在 SQLite 数据库中实现引用计数之类的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32777758/

相关文章:

c++ - OTL 和 SOCI 的区别

java - 实体管理器中出现重复键错误,并保留正确的对象

java - jdbc4connection + boneCP + MAT的内存泄漏

Android - 屏幕方向重新加载 Activity

ANDROID_HOME 未设置且 "android"命令不在您的 PATH Phonegap 中

php - JSencodeURI() 和 PHP urldecode() 之间的不同结果

javascript - 数据显示更新结果,但更新结果不工作 PHP

java - 如何在 javafx 中添加文本框而不移动按钮

java - 调用另一个类时出现 NoSuchElementException

android - 从sqlite获取经纬度打开waze