2012-04-20 9 views
0

私はAndroid 3.1アプリケーションを開発しています。SQLiteDatabaseで2つのテーブルでselectを実行

私は、次の表があります。

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; 

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

これを試してみてください:queryとして

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

Cursor c = database.rawQuery(query, null); 
関連する問題