2013-10-31 50 views
1

我有这个表:SQLiteDatabase需要帮助查询......请

id | CUPNAME | FRENCHNAME 
1 | 2  | null 
2 | null | 4 

我想拉从CUPNAME和FRENCHNAME数据是不为空。 该表可以填充有数字1至10在该示例中,应当能够CUPNAME = 2,FRENCHNAME = 4

有这样的查询:

SELECT sum(ifnull(french_press_bd.CUPNAME,0)) as a , sum(ifnull(french_press_bd.FRENCHNAME,0)) as b FROM my_table WHERE id in (1,2) 

我尝试写所以这是行不通的:

String sqr = "id in (1,2)"; 
Cursor cursor = sqdb.query(french_press_bd.TABLE_NAME, new String[] {     
"sum(ifnull(french_press_bd.CUPNAME,0)) as a , sum(ifnull(french_press_bd.FRENCHNAME,0)) as b" 
},sqr, null,null,null,null); 
+0

你需要给两个字符串(每列一个),但你是什么真正想要的? –

+0

我想从表中引入一行数据,删除值为空 – comSaaxov

+0

请编辑您的问题以显示输入表和所需的输出。 –

回答

1

我认为你可以使用rawQuery。正如:

String your_query= "SELECT sum(ifnull(french_press_bd.CUPNAME,0)) as a , sum(ifnull(french_press_bd.FRENCHNAME,0)) as b FROM my_table WHERE id in (1,2)"; 
Cursor result = sqdb.rawQuery(your_query, null); 

但要确保SQLiteDatabaseNULL。您收到来电,

sqdb = dbhelper.getReadableDatabase(); // or getWritableDatabase() 
+0

哦谢谢提示,但显然我没有正确创建查询。 我有一个表,两列和TSUPNAME TSUPNAME和两行值的第一行CUPNAME = 1 = FRENCHNAME null 值在第二行CUPNAME = null FRENCHNAME = 2 我想获得日志值在一个方式“12”并摆脱空 – comSaaxov

+1

@ user2923449你应该已经在OP中指定了这个要求! –

0

此查询使用两个标量子查询来从各个栏的第一个非NULL值:

SELECT (SELECT CUPNAME 
     FROM my_table 
     WHERE id IN (1, 2) 
      AND CUPNAME IS NOT NULL 
     ) AS CUPNAME, 
     (SELECT FRENCHNAME 
     FROM my_table 
     WHERE id IN (1, 2) 
      AND FRENCHNAME IS NOT NULL 
     ) AS FRENCHNAME; 

由于外部查询实际上并没有做任何事情,它可能是简单的只是单独执行这两个查询:

long cName = db.compileStatement("SELECT CUPNAME FROM my_table" + 
           " WHERE id IN (1, 2) AND CUPNAME IS NOT NULL" 
           ).simpleQueryForLong(); 
long fName = db.compileStatement("SELECT FRENCHNAME FROM my_table" + 
           " WHERE id IN (1, 2) AND FRENCHNAME IS NOT NULL" 
           ).simpleQueryForLong(); 
+0

好的,你可以做一个查询没有引用ID? – comSaaxov

+0

我不明白你的问题。 –