2010-11-29 20 views
2

Ich versuche eine Abfrage zu machen, wo ich Daten von zwei Tabellen bekomme, aber es zeigt mir kein Ergebnis. Ich weiß, dass es ein Ergebnis gibt, weil es in SQLite3 mindestens einen anzeigt, z.Wie man mehrere Tabellen mit managedQuery verbindet?

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

Ich verwende einen Inhaltsanbieter. Hat jemand eine Idee, wie man das macht?

Antwort

0

Ihre Frage ist nicht wirklich klar (Sie sollten etwas von Ihrem Code einbeziehen!), Damit ich Ihre Frage nicht so beantworte, wie Sie es erhofft haben. Aber folgt ein einfaches Beispiel, das ich habe, wo ich zwei Tabellen in einer Abfrage:

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; 
} 

Hinweis, dass es wahrscheinlich viele Dinge, die in dieser Funktion optimiert werden könnte, aber es zeigt, wie es getan werden kann.

+0

Vielen Dank für die Antwort! Ich mache es anders, aber es ist immer schön, ein paar Lichter zu haben. – dwbrito

0

Wie ich bin mit Content-Provider mir etwas zu Ende zu tun nicht ganz schnell, aber das funktioniert:

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); 
} 
Verwandte Themen