2017-05-08 21 views
0

내 데이터베이스의 데이터로 채워진 listView가 있습니다. simpleCursorAdapter를 사용하여 값을 표시합니다.SimpleCursorAdapter에서 외래 키 값 가져 오기

난 내가 수업을 추가 할 수있는 테이블이 : 영어, 프랑스어 ... 다른 테이블에서

, 내가 경제력 교훈을 (내가 레슨, 테마를 시작과 끝, 일의 날짜를 추가 생성 할 수 있습니다). 나는 공과를 FK로 제공해야한다.

수업을 추가하면 목록보기에 영어 - 독서가 표시되지만 1 - 독서가 표시됩니다. 왜냐하면 1은 제 2 테이블에 값을 저장하기 때문입니다.

영어로 어떻게 변경할 수 있습니까?

Cursor cursor = dbhelper.getAllCours(); 
    String[] from = { "branche_cours", "designation" }; //here 'branche_cours' is the lesson i store as an INT, it's the FK so 
    int[] to = { R.id.text_branche_cours, R.id.text_designation }; 
    adapter = new SimpleCursorAdapter(this, R.layout.list_row, cursor, from, to, 0); 
    lvCours.setAdapter(adapter); 
    adapter.notifyDataSetChanged(); 

내가

public Cursor getAllCours() 
{ 

    //from here, i retrieve the ID, designation and branche_cours 
    String Query = ("select ID as _id, date_debut, date_dernier, dixieme_point, " + 
      "demi_point, description, designation, lundi, mardi, mercredi, jeudi," + 
      " vendredi, samedi, branche_cours from " + TABLE_COURS); 

    Open(); 

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

    return cursor; 
} 

이 어떻게 실제 값으로하는 int (그래서 '1' '영어가되는 방법 있음을 연결할 수 있습니다 getAllCours()를 사용하는 방법 : 여기

내 코드입니다 ')?

+0

.. 난 그냥 그렇게 테스트되었고,이 일 – David

답변

2

하나의 해결책은 두 테이블에서 데이터를 가져 오기 위해 SQL JOIN 작업을 수행하는 것입니다 :

가 그래서 SQL 쿼리를해야 뭔가 일이 같은 :

SELECT table1.branche_cours, table2.designation 
FROM table1 
INNER JOIN table2 ON table1.ID=table2.ID; 
+0

, Y 감사합니다 : 당신은 correlated subquery 사용할 수 있습니다 귀하의 도움을 위해! – David

1

다른 테이블에 값을 찾으려면 나는 아직 해결책을 찾지 못한

SELECT ID AS _id, 
     ..., 
     samedi, 
     (SELECT name 
     FROM other_table 
     WHERE other_table.id = cours.branche_cours 
     ) AS branche_cours 
FROM cours; 
+0

잘 작동합니다. 감사합니다! – David