2016-11-12 1 views
0

Я разрабатываю приложение, в котором я попытался отобразить значения в типе книги, для которых я использовал концепции внутреннего соединения для двух таблиц с именем daybook и tradetable. В дневнике в нем хранятся такие значения, как сумма, которую получил пользователь, сумма аванса, которую получил пользователь, а также другие данные, где, как и в tradetable, хранится информация о платежах.Sqlite Inner join повторяет одно и то же значение для определенного столбца в каждой строке

Daybook стол:

String CREATE_DAYBOOK = "CREATE TABLE " + DAYBOOK_DETAILS + "(" 
      + DAYBOOK_ID + " INTEGER PRIMARY KEY," 
      + DAYBOOK_DATE + " TEXT," 
      + DAYBOOKUSER_TYPE + " TEXT," 
      + DAYBOOK_AMOUNT_IN + " NUMERIC," 
      + DAYBOOK_AMOUNT_OUT + " NUMERIC," 
      + DAYBOOK_NAME + " TEXT," 
      + DAYBOOK_MOBILENO + " NUMERIC," 
      + DAYBOOK_DESCRIPTION + " TEXT," 
      + DAYBOOK_TYPE + " TEXT" + ");"; 
    db.execSQL(CREATE_DAYBOOK); 

Tradetable:

String CREATE_TRADE_TABLE = "CREATE TABLE " + TRADE_LABELS + "(" 
      + TRADE_ID + " INTEGER PRIMARY KEY," 
      + TRADE_DATE + " TEXT," 
      + TRADE_FARMERNAME + " TEXT," 
      + TRADE_FMOBILENO + " NUMERIC," 
      + TRADE_BILLNO + " NUMERIC," 
      + COCONUT_NO + " NUMERIC," 
      + COCONUT_COST + " NUMERIC," 
      + TOTAL_AMOUNT + " NUMERIC," 
      + TRADE_ADVANCE_AMOUNT + " NUMERIC," 
      + BALANCE_AMOUNT + " NUMERIC," 
      + NOTES + " TEXT," 
      + SETTLED + " TEXT" + ");"; 
    db.execSQL(CREATE_TRADE_TABLE); 

Запрос:

String selectquery = "SELECT daybookdetails.date,\n" + 
       "  IFNULL(amountin,0) AS tradetotal,\n" + 
       "  IFNULL(amountout,0) AS advancetotal,\n" + 
       "  IFNULL(advanceamt,0),\n" + 
       "  daybookdescription,\n" + 
       "  daybooktype\n" + 
       "FROM farmertradelabel\n" + 
       "INNER JOIN daybookdetails ON farmertradelabel.mobileno = daybookdetails.mobileno\n" + 
       "WHERE daybookname = '"+fname+"'\n" + 
       " AND daybookdetails.mobileno = '"+fmobno+"'\n" + 
       "GROUP BY daybookdetails.date\n" + 
       "ORDER BY daybookdetails.date ASC"; 

Я дал условие о том, как следует:

if (cursor.getString(3).startsWith("0")) { 
       ledgerView.setBalance(cursor.getString(2)); 
      } else { 
       double one = Double.parseDouble(cursor.getString(1)) - Double.parseDouble(cursor.getString(3)); 
       ledgerView.setAdvancegiven(String.valueOf(one)); 
       ledgerView.setBalance(cursor.getString(3)); 
      } 

выход, который я ожидал должен быть таким: expectedoutput

Но выход, который я получаю следующим образом: actualoutput

В Actual выходе дебет капитала повторяет одни и те же значения в каждой строке я пробовал использовать различные, но все же он показывает тот же output.can кто-нибудь сказать мне, что неправильно в запросе, который я использовал.

ответ

0

В запросе используются различные имена таблиц и столбцов по сравнению с кодом для создания SQL таблиц ...

Запрос наверняка не правильно, вы используете столбцы из таблицы daybookdetails не присутствует в группе по. Столбцы могут использоваться с некоторой функцией агрегации, например, например, суммой.

Смежные вопросы