0
我建設使用的建議我的查詢從Does ORMLITE support SQL EXISTS?使用ORMLite凡NOT EXISTS
public List<Crag> getAllCragsWithLocation() {
QueryBuilder<Crag, Integer> cragQueryBuilder = _helper.getCragDao().queryBuilder();
QueryBuilder<CragLocation, Integer> cragLocationQueryBuilder = _helper.getCragLocationDao().queryBuilder();
try {
cragLocationQueryBuilder.where().eq("locationType", 0);
cragQueryBuilder.where().exists(cragLocationQueryBuilder);
return cragQueryBuilder.query();
} catch (Exception e) {
Log.e(TAG,e.toString());
return new ArrayList<Crag>();
}
}
,無論他們是否有cragLocation的這會將所有的峭壁,只要有任何cragLocation時如何通過ID相符與0這是可以理解一個的locationType ...
在上面鏈接的例子...
QueryBuilder<Visit, Integer> visitQb = visitDao.queryBuilder();
visitQb.where().eq(Visit.CLIENT_ID_FIELD, client.getId());
QueryBuilder<Client, Integer> clientQb = clientDao.queryBuilder();
clientQb.where().exists(visitQb);
List<Client> results = clientQb.query();
我想查詢鏈接到SPE的id在我的情況cific客戶端或者更明確地
select * from client c
where EXISTS (select * from visit v where c._id = v.client_id)
select * from Crag c
where EXISTS (select * from CragLocation cl where c.id = cl.crag_id)
所以我最終的查詢是:
select * from Crag c
where EXISTS (select * from CragLocation cl where c.id = cl.crag_id and cl.location_type = 0)