2012-04-20 38 views
0

我正在開發一個Android 3.1應用程序。SQLiteDatabase上的兩個表執行選擇

我有以下表格:

FormBlock 
--------- 
FormId (INTEGER) FOREIGN KEY TO Form.id 
BlockId (INTEGER) FOREIGN KEY TO Block.id 

Block 
---------- 
id   (INTEGER) PRIMARY KEY 
name  (TEXT) NOT NULL 
orderInForm (INTEGER) NOT NULL 

我想要做如下選擇:

SELECT block.blockId, block.name, block.orderInForm FROM Block, FormBlock WHERE FormBlock.FormId = 1 AND block.blockId = FormBlock.blockId; 

我怎麼能做到這一點與SQLiteDatabase.query(...)SELECT語句或rawQuery()

回答

2
SELECT 
    block.blockId, block.name, block.orderInForm 
FROM 
    Block, FormBlock 
WHERE 
    FormBlock.FormId = 1 AND block.blockId = FormBlock.blockId; 

query

String table = "Block, FormBlock"; 
String[] columns = new String[] { "block.blockId", "block.name", "block.orderInForm" }; 
String where = "FormBlock.FormId = 1 AND block.blockId = FormBlock.blockId"; 
Cursor result = db.query(table, columns, where, null, null, null, null); 

如果1是動態的,那麼

int formId = 1; 
String table = "Block, FormBlock"; 
String[] columns = new String[] { "block.blockId", "block.name", "block.orderInForm" }; 
String where = "FormBlock.FormId = ? AND block.blockId = FormBlock.blockId"; 
String[] whereArgs = new String[] { String.valueOf(formId) }; 
Cursor result = db.query(table, columns, where, whereArgs, null, null, null); 
1

試試這個:

String query = "SELECT * FROM Block WHERE id IN 
        (SELECT BlockId FROM FormBlock WHERE FormId = 1)"; 

Cursor c = database.rawQuery(query, null);