2017-03-31 40 views
1

你好我創建一個應用程序的健身鍛鍊,在那裏的信息可以保存到2個表(TABLE_CARDIO對心臟活動和TABLE_WEIGHTS的重量訓練活動)返回所有字段。下面是兩個表的結構:寫一個SQL查詢,從2個sqlite的表(Android應用程序)

public static final String DATABASE_NAME = "FitnessTracker.db"; 
public static final String TABLE_WEIGHTS = "saved_workout_weights"; 
public static final String COL_1 = "ID"; 
public static final String COL_2 = "DATE"; 
public static final String COL_3 = "EXERCISE"; 
public static final String COL_4 = "WEIGHT"; 
public static final String COL_5 = "REPS"; 
public static final String COL_6 = "SETS"; 

public static final String TABLE_CARDIO = "saved_workout_cardio"; 
public static final String COL_1a = "ID"; 
public static final String COL_2a = "DATE"; 
public static final String COL_3a = "TIME"; 

然後我有以下方法用於從兩個表中選擇所有的數據(這正是我需要的)查詢:

public Cursor getWorkoutData() { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    String query = "SELECT * FROM " + TABLE_CARDIO + "FULL OUTER JOIN " + TABLE_WEIGHTS + "ON" + TABLE_CARDIO.DATE = TABLE_WEIGHTS.DATE; ; 
    Cursor result = db.rawQuery(query,null); 
    return result; 
} 

,你可以在查詢中,請參閱我試圖使用'DATE'字段作爲外鍵來加入2個表。不過,android studio會突出顯示'DATE'爲紅色,並拋出錯誤'無法解析符號'。

我知道這裏有一些類似的問題,但我一直無法在我的方案中實施任何解決方案。任何幫助,將不勝感激!

回答

3

忘記放置"="。您的查詢應該像以下

String query = "SELECT * FROM " + TABLE_CARDIO + " FULL OUTER JOIN " + TABLE_WEIGHTS + " ON " + TABLE_CARDIO.DATE + " = " + TABLE_WEIGHTS.DATE; 

不要忘記放置sql關鍵字周圍的空格。

新增

的另一件事是ambigous字段名。所以你需要在字段之前放置表名。

String query = "SELECT * FROM " + TABLE_CARDIO + " FULL OUTER JOIN " + TABLE_WEIGHTS + " ON " + TABLE_CARDIO + ".DATE = " + TABLE_WEIGHTS + ".DATE"; 

請不要使用select * from ...查詢。 :-)

+0

太棒了,這正是我需要知道的。謝謝! –