2017-03-22 49 views
0

子查詢我在SQL的Andorid sqllite選擇具有計數

UPDATE Flavor a 
SET count = (SELECT COUNT(*) 
FROM recipes c 
WHERE c.flv1name = a.name) 

返回從表中調用配方中的所有條目的數量在名爲flv1name此查詢。然後它更新名爲count的列中名爲flavors的第二個表,其中來自flv1name的條目總數就像這樣。

Table Flavors 
_id   name   count 
1   Apple  2 
2   Berry  1 
3   Cherry  4 

問題是,我該如何在我的android應用程序中的數據庫幫助程序中編寫此語句?

這裏是我迄今爲止

 public Cursor syncflavorcount() { 
      mDb = mDbHelper.getReadableDatabase(); 
      String buildSQL = "UPDATE " + DATABASE_TABLE2 + " a SET count = (SELECT COUNT(*) FROM " + DATABASE_TABLE + " c WHERE c.flv1name = a.name) "; 


    return mDb.rawQuery(buildSQL, null); 
} 

回答

0

如何mDb.update("UPDATE " + DATABASE_TABLE2 + " a SET count = (SELECT COUNT(*) FROM " + DATABASE_TABLE + " c WHERE c.flv1name = a.name)")

+0

謝謝,我認爲這個問題是與nDb.update。它正在調用一個不同的格式,而不是一個編譯語句。因此,這個問題。如何在Android的DBAdapter中編寫此語句。 –

+0

好吧,我經過一些更改後運行代碼,並且出錯。 錯誤代碼:1(SQLITE_ERROR) 原因:SQL(查詢)錯誤或缺少數據庫。在編譯時:UPDATE調用SET count =(SELECT COUNT(*)FROM recipes c WHERE c.flv1name = a.name))(「a」:語法錯誤(代碼1): –

0

爲了做到這在Android應用程序數據適配器別名必須去除工作。

從這個

mDb.update("UPDATE " + DATABASE_TABLE2 + " a SET count = (SELECT COUNT(*) FROM " + DATABASE_TABLE + " c WHERE c.flv1name = a.name)") 

爲了這

mDb.update("UPDATE " + DATABASE_TABLE2 + " SET count = (SELECT COUNT(*) FROM " + DATABASE_TABLE + " WHERE " +DATABASE_TABLE2+ ".flv1name = " +DATABASE_TABLE+".name)");