2012-10-16 3 views
0

현재이 작업을하고 있습니다.SQLiteOpenHelper를 사용하는 동안 JOIN 쿼리를 만드는 가장 좋은 방법은 무엇입니까

더 좋은 방법이 있습니까?

public Cursor selectRostersForTeam(Activity activity, int teamId) { 

    final String MY_QUERY = "SELECT r." + _ROSTER_ID + ", t." + _TEAM_ID + ", t." + TEAM_NAME + ", t." + TEAM_SEASON_WINS + ", t." + TEAM_SEASON_LOSSES + ", t." + TEAM_CHAMPIONSHIP_WINS + ", j." + _TEAMS_ROSTERS_ID + " FROM " + TABLE_TEAM + " AS p" + " JOIN " + TABLE_TEAMS_ROSTERS + " j ON (r." + _ROSTER_ID + " = j." + TEAMS_ROSTER_ROSTER_ID + ") " + " JOIN " + TABLE_TEAM + " ch ON (j." + TEAMS_ROSTER_TEAM_ID + " = t." + _TEAM_ID + ") WHERE j. " + TEAMS_ROSTER_TEAM_ID + " = " + teamId + ";"; 



    SQLiteDatabase db = getReadableDatabase(); 

    Cursor cursor = db.rawQuery(MY_QUERY, null); 

    activity.startManagingCursor(cursor); 

    return cursor; 
} 

답변

1

rawQuery()에 대한 대안은 query() 것이지만, 그 중 하나가 조인을 위해 설계되지 않았습니다.

가입이 중요하다고 생각되면 create a view을 입력하고 query() 테이블에서 사용하십시오.


참고 :

rawQuery(..._TEAM_ID + " = ?", new String[] { Integer.toString(teamId) }); 
: 대신 쿼리 문자열로 포맷의 매개 변수로 teamId 같은 값을 전달하는 것이 좋습니다
관련 문제