2017-02-10 11 views
0

У меня есть 2 вопроса, но они почти связаны.Как получить сумму разных таблиц, но те же имена столбцов

первый вопрос:

У меня есть 4 различные таблицы с именем завтрак, обед, ужин и другие, но они имеют те же имена столбцов, как жира, калорий и железа.

Каков наилучший способ добавить их и показать их на TextView как один для каждого (жира, калорий и железа)

Как, например

Total Fat is (111) 
Total Calories is (222) 
Total Iron is (333) 

второй вопрос

Как насчет того, хочу ли я отображать данные столбцов разных таблиц. Как я могу отображать все значения толщины столбцов из разных таблиц в sqlite?

К примеру, у меня есть это на моем SQLite базе данных

breakfast table lunch table  dinner table  others table 
    Fat column  Fat column   Fat column   Fat column 
    1     3     6     9 
    2     4     7     10 
    3     5     8     11 

и я хочу, чтобы показать, что на TextView что-то вроде этого

Fats 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
+2

* У меня есть 2 вопроса * - так что вы должны задать два отдельных вопроса: –

+0

Может быть, я должен задать разные вопросы сэр, но этот 2 вопрос достаточно далеко друг от друга, поэтому я думаю, что песон мог ответить на один из этих вопросов также ответьте на другой. –

ответ

2

Я хотел бы сделать 1 таблицу и добавить столбец timeOfDay

в базе данных вспомогательный обработчик класс

public ArrayList<Integer> getFats(int timeOfDay) { 
    //0:breakfast 
    //1:lunch 
    //3:dinner 
    //4:other 
    ArrayList<Integer> result = new ArrayList<Integer>(); 
    SQLiteDatabase db = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); 
    String selectQuery = "SELECT * FROM TABLE WHERE timeOfDay = " + timeOfDay; 
    Cursor cursor = db.rawQuery(selectQuery, null); 
    if (cursor.moveToFirst()) { 
     result.add(cursor.getInt(cursor.getColumnIndex("fatColumn"))); 
     while (cursor.moveToNext()) { 
      result.add(cursor.getInt(cursor.getColumnIndex("fatColumn"))); 
     } 
    } 
    cursor.close(); 
    db.close(); 
    return result; 
} 

Внутри деятельности вы хотите, чтобы отобразить информацию

ArrayList<Integer> fats = db.getFats(1); 
int fatTotal = 0; 
for(Integer fat : fats){ 
    //output string for this particular fat reading 
    fatTotal += fat; 
} 
//output string of sum sort for totalFat 
0

У меня есть 4 различных таблиц именованных завтрак, обед, ужин и другие, но они имеют те же имена столбцов, как жир, калории и железа

Наличие разных таблиц с одинаковыми столбцами должно быть вашей основной проблемой, а не как объединить отдельные таблицы. (Потому что JOIN «s и кросс-сканирование таблицы дороги)

Вы должны сделать это, а

CREATE TABLE IF NOT EXISTS meals (
    _id PRIMARY KEY AUTOINCREMENT, 
    meal_time VARCHAR(20), 
    fat INTEGER, 
    calories INTEGER, 
    iron INTEGER, 
    time_eaten DEFAULT current_timestamp 
) 

реф на значения по умолчанию - Can I create a datetime column with default value in sqlite3?

Тогда вы бы INSERT значение с meal_time = 'dinner' и выберите WHERE meal_time = 'dinner', например.

В этот момент, ваш второй вопрос тривиален ...

SELECT fat from meals ORDER BY meal_time; 

Если вы хотите конкретные варианты обеда, обед, завтрак, затем добавить WHERE, как показано на рисунке.