2010-11-29 43 views
2

J'essaye de faire une requête où j'obtiens des données de deux tables mais cela ne montrera aucun résultat. Je sais qu'il y a un résultat parce que dans SQLite3 il en affiche au moins un, par ex.Comment joindre plusieurs tables avec managedQuery?

sqlite> select eventthemename, eventtypename from event_type, event_theme 
    ...> where event_type.eventthemes = event_theme._id  
    ...> and event_type._id = '2'; 
Tribal | Dance 

J'utilise un fournisseur de contenu. Est-ce que quelqu'un a une idée sur la façon de faire cela?

Répondre

0

Votre question n'est pas vraiment claire (vous devriez inclure une partie de votre code!), Donc je ne répondrais peut-être pas à votre question comme vous l'espériez. Mais voici un exemple simple que j'ai où je rejoins deux tables dans une requête:

private static final String QUERY_ALL_COURSES_WITH_SEMESTER = 
"SELECT * FROM Course JOIN Semester ON semesterId = courseSemesterId"; 

public Course getCourseByCodeAndSemester(String courseCode, Semester semester) 
{ 
Course result = null; 
String whereClause = " WHERE courseCode = '" + courseCode.toUpperCase() + "'" 
    + " AND semesterId = " + semester.getInternalId(); 
Cursor cursor = db.rawQuery(QUERY_ALL_COURSES_WITH_SEMESTER + whereClause, null); 
if (cursor.moveToFirst()) 
{ 
    result = Course.createFromCursor(cursor); 
} 
cursor.close(); 
return result; 
} 

Notez qu'il ya probablement beaucoup de choses qui pourraient être optimisés dans cette fonction, mais il illustre la façon dont il peut être fait.

+0

Merci pour la réponse! Je finis par faire autrement mais c'est toujours agréable d'avoir des lumières. – dwbrito

0

Comme j'utilise les fournisseurs de contenu j'ai fini de faire quelque chose, mais pas tout à fait rapide qui fonctionne:

themes = managedQuery(
     EventTheme.CONTENT_URI, 
     PROJECTIONTHEMES, 
     EventTheme.EVENTTYPE + "= ?", 
     new String[] {eventType}, 
     EventTheme.DEFAULT_SORT_ORDER); 

String[] from = new String[] { 
     Event._ID, 
     Event.NAME, 
     Event.STARTDATE, 
     Event.ENDDATE, 
     PointOfInterest.POINTOFINTERESTNAME 
    }; 

int[] to = new int[] { 
     R.id.event_id, 
     R.id.name, 
     R.id.start_date, 
     R.id.end_date, 
     R.id.location_name 
    }; 

while (themes.getPosition() < themes.getCount() - 1) { 
    themes.moveToNext(); 
    eventTheme = themes.getString(themes.getColumnIndexOrThrow(EventTheme._ID));     
    events = managedQuery(
      Event.CONTENT_URI, 
      PROJECTIONEVENTS, 
      Event.EVENTTHEME + "= ?", 
      new String [] { eventTheme } , 
      Event.DEFAULT_SORT_ORDER); 
}