【发布时间】:2020-10-26 04:44:39
【问题描述】:
为了这个场景,我有一个user 表和两个表,其中每个user 可以是一种或两种类型,分别是friend 和family 表。如果用户存储在user 表中,这两个仅包含 id。
我正在尝试执行以下操作:
返回所有friends 或 family 的用户,按名称排序并按type 分组。
到目前为止,我几乎没有遇到任何问题,当我想在查询中按type 分组并在RecyclerView 中添加分隔符以区分用户是朋友和用户时,问题就出现了家庭。
我的意图是在查询本身中添加某种布尔值作为标志,从而区分在同一列表中返回的用户,但我很难找到任何类型的指导或示例如何做到这一点。
这是我正在尝试做的一个示例(不工作):
@Query("" +
"SELECT " +
"*, " +
"table source? as type " + // here
"FROM UserFamily " +
"LEFT JOIN User " +
"ON UserFamily.id = User.id " +
"LEFT JOIN UserFriend " +
"ON User.status = UserFriend.id " +
"ORDER BY name ASC " +
"GROUP BY ... table source? " // here
)
如何做到这一点?我知道我可以将所有不同的类型作为列添加到用户表中,然后对每个类型进行布尔运算,但这不是一个选项。
编辑:按要求提供样本数据
User表
| id | first_name | age |
|:--:|:----------:|:---:|
| 1 | Danny | 28 |
| 2 | Susan | 15 |
| 3 | Lenny | 45 |
Friend表(id是属于User表的外键)
| id |
|:--:|
| 3 |
Family表(id是属于User表的外键)
| id |
|:--:|
| 1 |
期望的结果:
| id | first_name | age | type |
|:--:|:----------:|:---:|:----:|
| 1 | Danny | 28 | 1 |
| 3 | Lenny | 45 | 2 |
其中type 代表一个用户,该用户按 1 和 2 是家人或朋友,按 first_name 排序并按 type 分组。
【问题讨论】:
-
样本数据和期望的结果真的很有帮助。
-
@GordonLinoff 恐怕我不明白你的要求,所以我尽我所能在我的编辑说明中尽力满足你的要求,如果你的意思是什么,请告诉我否则。
标签: android sql android-room