2014-03-02 13 views
0

SQLiteQueryBuilder을 사용하여 쿼리를 작성하려면 rawQuery을 사용하고 쿼리에 subQuery이 포함되어 있는데도 오류가 발생하지는 않지만 결과는 아무 것도 나타나지 않습니다.하위 쿼리

쿼리 somethig에 선택입니다

SELECT * FROM TABLE1 WHERE a = (SELECT b FROM TABLE2 WHERE id = 1);

SQLiteQueryBuilder.query(database,null,selection,selectionArgs,null,null,null,null,null);

같다 "는 =?" 및 selectionArgs = "SELECT b FROM TABLE2 WHERE id = 1";

+0

어디에서 ** ** (선택 ...) –

답변

0

표현식이나 하위 쿼리가 아닌 ?을 사용하고 리터럴에만 args를 바인딩 할 수 있습니다. 쿼리가 정말 그래서 대한 ?를 사용하지 않는

... WHERE a='SELECT b FROM TABLE2 WHERE id=1' 

비슷한된다 있도록 결합하려는 하위 쿼리는 정말 리터럴 문자열로 바인딩됩니다.

당신은 아마 또한 IN 대신 = 원하는

: 여기에서

SELECT * FROM TABLE1 WHERE a IN (SELECT b FROM TABLE2 WHERE id=1); 

당신이 id에 대한 ? 바인드 인수를 사용할 수 있습니다

SELECT * FROM TABLE1 WHERE a IN (SELECT b FROM TABLE2 WHERE id=?); 

당신은 아마도 SQLiteQueryBuilder과 같은 쿼리를 만들 수 있지만 간단히 말해서 rawQuery()을 사용하는 것이 더 간단합니다.