2011-07-02 4 views
4

도움말 sqlite n00b 도움을주십시오. 어떻게 내가 할 수있는,외래 키를 사용하는 sqlite 쿼리

나는 두 테이블

"CREATE TABLE students (" + 
      "_id  INTEGER PRIMARY KEY AUTOINCREMENT," + 
      "studentname  TEXT not null," + 
      "studentpic  BLOB," + 
      "comment   TEXT);"; 

"CREATE TABLE classes (" + 
      "_id    INTEGER PRIMARY KEY AUTOINCREMENT," + 
      "classname  TEXT," + 
      "attend   INTEGER," + 
      "late    INTEGER," + 
      "dtime   TEXT," + 
      "student   INTEGER REFERENCES students(_id) on 
          UPDATE CASCADE);"; 

내가 특정 클래스 학생들의 목록을 표시 할,하지만 내 수업의 테이블은 학생 id로이를 참조 단일 커서로 '클래스'테이블의 모든 필드를 다시 가져 오지만 'students'테이블의 실제 이름을 사용하는 쿼리를 작성 하시겠습니까? 사전에

많은 감사

+0

http://www.higherpass.com/Android/Tutorials/Accessing-Data-With-Android-Cursors/ – Android

답변

7

다음과 같은 SQL 코드로 rawquery 방법을 사용할 수 있습니다 : 한마디로

SELECT classes._id, students.studentname, classes.classname, classes.attend, classes.late, classes.dtime 
FROM students, classes 
WHERE students._id=classes.student 

, 두 개의 테이블에서 선택하여, 당신은 그들과 합류,하지만 당신은 어떻게 지정해야 그들은 합류했다. SELECT 뒤에 나오는 부분은 출력으로 원하는 것을 알려줍니다. FROM은 어떤 테이블이 관련되어 있는지 보여줍니다 (해당 테이블의 파트가 출력에 표시되는지 여부와 관계 없음). 기본적으로 두 개의 테이블을 제공하면 첫 번째 테이블에서 한 행과 두 번째 테이블에서 가능한 모든 조합이 만들어 지므로 WHERE 절에 학생의 행만 일치하도록 범위를 좁히는 조건이 필요합니다 클래스 테이블의 해당 행과 일치하는 ID가있는 테이블. 이는 외래 키 관계가 정의되어 있는지 여부에 관계없이 작동합니다.

WHERE 절에 대한 추가 조건이있는 경우 AND를 사용하여 추가 할 수 있습니다. 예를 들면 :

here (이미 이해하고있는 것있는 많은) 안드로이드 SQLite는의 데이터베이스를 설정하고 사용하는 전체 과정에 대한 좋은 튜토리얼있다
WHERE students._id=classes.student AND classes.classname="Underwater Basket Weaving" 

.

+0

우수! 고마워요. 나는이 사이트를 좋아한다! 대부분의 시간 내에 답변을 제공합니다. 지난 시간에 내가 심각하게 프로그래밍 한 인터넷은 여전히 ​​arpanet이었고 우리는 대답을 얻기 위해 책을 읽거나 사람들과 얼굴을 맞대고 대화해야했습니다. – Martin

+0

안녕 키이스. 그 SqlSpy 또는 이와 유사한 SQLite GUI에서 잘 작동하지만 안드로이드 점점 여러 테이블을 사용하여 쿼리 형식을 행복하게 지내고 있어요. 그것에 대한 mDb.query 문을 작성하는 방법에 대한 힌트가 있습니까? – Martin

+0

SQL과 함께 mDb.rawquery를 사용해 보셨습니까? 나는이 플랫폼을 직접 테스트 할 수있는 개발 플랫폼이 없지만 rawquery는 SQLite가 취하는 모든 SQL 쿼리를 사용한다고 생각합니다. –

관련 문제