【问题标题】:Sqlite Inner join repeats the same value for a particular column in each rowSqlite 内连接对每一行中的特定列重复相同的值
【发布时间】:2017-03-26 10:38:53
【问题描述】:

我正在开发一个应用程序,我在其中尝试以分类帐类型显示值,为此我对名为 daybook 和 tradetable 的两个表使用了内部连接概念。 在 daybook 中,它存储诸如用户获得的金额、用户获得的预付款以及其他详细信息等值,而在 tradetable 中它存储了付款信息。

日记表:

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);

可交易:

  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));
            }

我期望的输出应该是这样的:

但我得到的输出如下:

在实际输出中,借方资本在我尝试使用 distinct 的每一行中重复相同的值,但仍然显示相同的输出。谁能告诉我我使用的查询中有什么问题。

【问题讨论】:

    标签: android sqlite inner-join


    【解决方案1】:

    在查询中,与创建 sql 表的代码相比,您使用不同的表名和列名...

    查询肯定不正确,您使用了 group by 中不存在的 daybookdetails 表中的列。这些列只能与一些聚合函数一起使用,例如 sum。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      相关资源
      最近更新 更多