Как я могу получить данные из двух таблиц по запросу? - PullRequest
0 голосов
/ 17 февраля 2019

Я хочу получить все данные из двух таблиц и преобразовать их в StringBuffer, но у меня есть проблема с запросом.Я не знаю, как я должен назвать это правильно.

Этот метод покажет пользователю, созданный им планы обучения.Там будет два вида этого плана.Например, в FBW_TABLE_SET_A_CHEST пользователь выбрал упражнение с именем «сжимая штангу», а в FBW_TABLE_SET_B_CHEST пользователь выбрал упражнение с именем «сжимая гантель».

Вот как называются таблицы

private static final String FBW_TABLE_NAME_SET_A = "FbwSetA";
private static final String FBW_TABLE_SET_A_CALF = "calfExerciseSetA";
private static final String FBW_TABLE_SET_A_LEGS = "legsExerciseSetA";
private static final String FBW_TABLE_SET_A_BACK = "backExerciseSetA";
private static final String FBW_TABLE_SET_A_SHOULDERS = "shouldersExerciseSetA";
private static final String FBW_TABLE_SET_A_BICEPS = "bicepsExerciseSetA";
private static final String FBW_TABLE_SET_A_TRICEPS = "tricepsExerciseSetA";
private static final String FBW_TABLE_SET_A_CHEST = "chestExerciseSetA";
private static final String FBW_TABLE_SET_A_ABS = "absExerciseSetA";
private static final String FBW_TABLE_SET_A_FOREARM = "forearmExerciseSetA";

private static final String FBW_TABLE_NAME_SET_B = "FbwSetB";
private static final String FBW_TABLE_SET_B_CALF = "calfExerciseSetB";
private static final String FBW_TABLE_SET_B_LEGS = "legsExerciseSetB";
private static final String FBW_TABLE_SET_B_BACK = "backExerciseSetB";
private static final String FBW_TABLE_SET_B_SHOULDERS = "shouldersExerciseSetB";
private static final String FBW_TABLE_SET_B_BICEPS = "bicepsExerciseSetB";
private static final String FBW_TABLE_SET_B_TRICEPS = "tricepsExerciseSetB";
private static final String FBW_TABLE_SET_B_CHEST = "chestExerciseSetB";
private static final String FBW_TABLE_SET_B_ABS = "absExerciseSetB";
private static final String FBW_TABLE_SET_B_FOREARM = "forearmExerciseSetB";

А вот как я "создал" его с помощью db.execSQL (..)

db.execSQL("create table " + FBW_TABLE_NAME_SET_A + " (ID INTEGER PRIMARY KEY AUTOINCREMENT," + FBW_TABLE_SET_A_CALF + " TEXT," + FBW_TABLE_SET_A_LEGS + " TEXT," + FBW_TABLE_SET_A_BACK + " TEXT," + FBW_TABLE_SET_A_SHOULDERS + " TEXT," + FBW_TABLE_SET_A_BICEPS + " TEXT," + FBW_TABLE_SET_A_TRICEPS + " TEXT," + FBW_TABLE_SET_A_CHEST + " TEXT," + FBW_TABLE_SET_A_ABS + " TEXT," + FBW_TABLE_SET_A_FOREARM + " TEXT)");
    db.execSQL("create table " + FBW_TABLE_NAME_SET_B + " (ID INTEGER PRIMARY KEY AUTOINCREMENT," + FBW_TABLE_SET_B_CALF + " TEXT," + FBW_TABLE_SET_B_LEGS + " TEXT," + FBW_TABLE_SET_B_BACK + " TEXT," + FBW_TABLE_SET_B_SHOULDERS + " TEXT," + FBW_TABLE_SET_B_BICEPS + " TEXT," + FBW_TABLE_SET_B_TRICEPS + " TEXT," + FBW_TABLE_SET_B_CHEST + " TEXT," + FBW_TABLE_SET_B_ABS + " TEXT," + FBW_TABLE_SET_B_FOREARM + " TEXT)");

В сумме:этот метод должен получить все данные из двух таблиц, включить их в StringBuffer и показать созданные пользователем планы обучения.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019
db.execSQL("SELECT * FROM " + FBW_TABLE_NAME_SET_A + 
"UNION" +
"SELECT * FROM " + FBW_TABLE_NAME_SET_B);

Это должно дать вам все неповторяющиеся строки обеих таблиц.

0 голосов
/ 17 февраля 2019

Используйте составной оператор UNION.

Код SQL выглядит примерно так:

SELECT col1, col2 from table1 UNION SELECT col1, col2 from table2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...