2017-03-31 16 views
1

こんにちは私は、トレーニング情報を2つのテーブル(cardioアクティビティのTABLE_CARDIOとウェイトトレーニングアクティビティのTABLE_WEIGHTS)に保存できるフィットネスアプリを作成しています。以下は、2つのテーブルの構造である:2つのsqliteテーブル(Androidアプリ)からすべてのフィールドを返すためのSQLクエリの作成

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つのテーブルを結合しようとしています。ただし、アンドロイドのスタジオでは、「DATE」が赤で強調表示され、「シンボルを解決できません」というエラーが表示されます。

私はここにいくつかの同様の質問があることを知っていますが、私は自分のシナリオにどのソリューションも実装できませんでした。これに関する助けに感謝します!

答えて

3

場所を忘れた"="。あなたのお問い合わせは次のようにする必要があります

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

sqlキーワードの周りに空白を配置することを忘れないでください。

を追加しました

もう一つは不明瞭フィールド名です。したがって、フィールドの前にテーブル名を配置する必要があります。

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

select * from ...クエリを使用しないでください。 :-)

+0

これはまさに私が知る必要があったものです。ありがとうございました! –

関連する問題