2012-09-02 2 views
5

Windows-8-Metro-App 용 데이터베이스에 C# 및 SQLite를 사용하고 있습니다. Join-Command를 사용하고 싶지만 주어진 뒷 데이터를 읽는 법을 모릅니다.SQLite sqlite-net을 사용하여 Windows 8 Metro C#에 가입하십시오.

db.Query<Person>("SELECT * FROM Person, Job WHERE Person.JobID = Job.ID"); 

을 그리고 이것은 구현되지 않습니다 :이 작동하지 않습니다

db.Query<Person, Job>("SELECT * FROM Person, Job WHERE Person.JobID = Job.ID"); 

사람이 어떻게 이렇게하는 아이디어가있다? 조인

답변

7

괜찮, 구식 경우 - 당신은 사람의 데이터와 작업 데이터를 모두 반환하는 - - 당신은 새로운 구문 귀하의 문제는 당신이 반환하는 것입니다

SELECT * FROM Person INNER JOIN Job ON Person.JobID = Job.ID 

를 사용해야합니다 그래서 당신은을 만들어야합니다 반환 할 데이터 구조와 일치하는 클래스 - 또는 사람 또는 작업을 반환합니다.

db.Query<Person>("SELECT Person.* FROM Person INNER JOIN Job ON Person.JobID = Job.ID");   
db.Query<Job>("SELECT Job.* FROM Person INNER JOIN Job ON Person.JobID = Job.ID"); 
+0

두 테이블 결과를 목록 상자의 ITEM으로 제공하는 방법 ??? @podiluska –

0

제대로 사용할 수 있었으므로 시도해 볼 수 있습니다.

var db = new SQLiteAsyncConnection(_dbPath); 
var query = from person in await db.Table<Person>().ToListAsync() 
        join job in await db.Table<Job>().ToListAsync() 
        on person.JobID = job.ID 
        select new 
        { 
         Name=person.Name 
        }; 
+0

먼저 모든 데이터를 메모리에 선택하지 않습니까? 그것은 SQL 쪽에서 조인을하지 않습니까? –

+0

@IvanZivkovic 네, 맞습니다. –

+0

이 제안은 삭제되어야합니다. –

관련 문제