我有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
答案 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)行的原始查询。