首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveAndroid:子查询?

ActiveAndroid:子查询?
EN

Stack Overflow用户
提问于 2014-07-08 21:26:08
回答 1查看 1.6K关注 0票数 0

我在一个应用程序中使用ActiveAndroid进行数据库交互。我需要加入几个表,然后过滤结果,这通常是使用带有子查询的SQL查询完成的。

如何使用ActiveAndroid完成子查询?

如果无法执行子查询,是否有方法只返回唯一的模型对象?我的查询中的联接具有在联接表中创建重复行的效果,但我只希望返回每个Model的一个实例。

编辑:提供更多信息

我要检索的模型叫做Profile。

关于查询,有3个表:概要文件、角色和ProfileRoleJoins

概要文件和角色之间存在着多到多的关系,这种关系是由名为ProfileRoleJoins的联接表维护的。

我的目标是获得所有具有特定"event_id“并连接到由角色类型列表指定的一个或多个角色的配置文件。

此查询感兴趣的字段如下:

配置文件

  • Id
  • event_id (不是外键,只是数据字段)

角色

  • Id
  • 类型(案文)

ProfileRoleJoins

  • 配置文件(外键)
  • 角色(外键)

我试过什么

代码语言:javascript
复制
String eventId = //provided as input to this function
String[] roles = //array of "types" of roles we want to limit to
String whereClause = //built in a loop, looks like "Roles.type = ? OR Roles.type = ?..."

new Select()
    .from(ProfileEntity.class)
    .where("event_id = ?", eventId)
    .join(ProfileRoleJoinsTable.class)
    .on("Profiles.Id = ProfileRoleJoins.profile")
    .join(RoleEntity.class)
    .on("ProfileRoleJoins.role = Roles.Id")
    .where(whereClause, roles)
    .execute();

上面的查询存在一个问题,即它返回重复的概要文件,因为单个概要文件可以与多个角色关联,从而在连接过程中创建重复的配置文件。

我需要一份独一无二的档案列表。

我试过使用Distinct(),但是这个限定符适用于每一组列-我需要完整的概要文件返回。

我通常完成唯一性的方式是在子查询中执行上述查询,并且只返回不同的Profiles.Id值。然后,我将在主查询中对原始概要表运行一个过滤器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-09 06:28:03

我仍然不知道如何使用ActiveAndroid进行子查询(如果可能的话),但我找到了问题的根源。我使用的是一个过时的版本的库,在查询系统中出现了一些错误,结果被搞砸了。使用当前版本的库,我不会得到副本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24641890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档