如何使用Greendao执行以下查询?

时间:2014-02-05 13:53:15

标签: android sql greendao

我有2张表A和B.

表A包含名称,表B包含所选名称

现在我想使用greendao对这些表执行以下查询,请告诉我是否有可能,如果没有其他选择(可能是原始查询)。

select * 
from A inner join B
on A.nameid = B.nameid

此外,表A列:id, nameid, name
和表B列:id, nameid, name, rating

3 个答案:

答案 0 :(得分:7)

我认为这可能会有所帮助。 您可以将原始查询用作伪连接。您可以在Query对象中获得所需的一切

Query query = ATableDao.queryBuilder().where(
new StringCondition("nameid IN " +
"(SELECT nameid FROM B_Table )").build();

由于“nameid”似乎不是您样本中的唯一标识符。我不建议使用Relations来解决这个问题。如果您尝试使用Relations,则可以找到我之前的回答here.

答案 1 :(得分:2)

试试这个:

List<ATableObj> listATableObj = ATableDao.queryRawCreate(", BTable BT 
WHERE BT.nameid = T.nameid").list();

答案 2 :(得分:1)

如果您使用greendao,则其工作方式不同:

而不是您的查询,您可以从表a(或b)中选择行,如果您需要b(或a)字段,则可以调用getB()(或getA())来获取相应的行那张桌子。

如果表a中的行a在表b中没有匹配,并且表b中的行在a中没有匹配,并且您只想选择与两个表匹配的所有内容,则必须执行用于过滤a(或b)行的原始查询。