2010-07-19 43 views
23

Tôi đang cố gắng tìm ra cách tốt nhất để thực hiện một bảng đơn giản tham gia trên hai bảng của tôi bằng cách sử dụng cơ sở dữ liệu sqlite trong một ứng dụng Android. Cách đơn giản nhất để sử dụng CursorJoiner hoặc có cách nào dễ dàng hơn không?Cách tốt nhất để tham gia các bảng bằng cách sử dụng sqlite trong android

+0

Tốt hơn để làm điều này trong SQL. Tạo [VIEW] (http://www.sqlite.org/lang_createview.html) bằng [JOIN] (http://www.sqlite.org/lang_select.html) s cần thiết. – yanchenko

+0

Tôi đã cố gắng để làm điều đó nhưng đã có vấn đề nhận được dự án của tôi để nhận ra nó vì một lý do nào đó. –

+1

http://stackoverflow.com/a/4957197/334270 –

Trả lời

27

Trong việc thực hiện SQLiteDatabaseSQLiteQueryBuilder bạn sẽ thấy rằng nó có thể vượt qua các bảng bạn muốn tham gia vào table đối số của query mặc dù các tài liệu ngụ ý nó sẽ chỉ mất một tên duy nhất của một bảng. Tài liệu cho SQLiteQueryBuilder rõ ràng hơn và thậm chí còn gợi ý những thứ như foo, bar hoặc foo LEFT OUTER JOIN bar ON (foo.id = bar.foo_id).

+2

các liên kết bị hỏng – ytg

1

Nếu bạn sẵn sàng để sử dụng thư viện của bên thứ ba, tôi khuyên bạn nên sử dụng Active Android

https://github.com/pardom/ActiveAndroid

sử dụng nó, bạn có thể hợp nhất bảng như thế này

From query = new Select() 
    .from(Foo.class) 
    .innerJoin(Bar.class) 
    .on("Foo.Id=Bar.Id"); 

bạn thậm chí có thể nhận được con trỏ quay lại để sử dụng trong bộ nạp

Cursor cursor = Cache.openDatabase().rawQuery(query.toSql(), query.getArguments()); 

chi tiết khác here

Các vấn đề liên quan