如何计算重复的行数,但仅返回SQLite中的distinct的值?

逻辑1

我正在尝试使用 SQLite 的count()函数来计算商店库存中每个不同项目的项目数量。

我首先创建了一个“库存”表,其中每一行代表不同的商店位置。

店面表:

db.execSQL("CREATE TABLE IF NOT EXISTS stores (" +
        "_id              INTEGER            PRIMARY KEY AUTOINCREMENT, " +
        "timestamp        DATETIME           DEFAULT CURRENT_TIMESTAMP " +
        //many other columns (eg. address, state, phone...)
        ");");

然后我创建了一个表,其中包含所有项目的列表,其中_store_id基本上指向“商店”表中的主键。

项目条码扫描信息表:

db.execSQL("CREATE TABLE IF NOT EXISTS item_scans (" +
        "_id              INTEGER            PRIMARY KEY AUTOINCREMENT, " +
        "_store_id        INTEGER," +
        "item_code        VARCHAR " +
        ");");

尝试检索特定商店的库存信息:

首先,我尝试了一个简单的查询来获取与特定店面相关的所有已扫描商品的列表(该变量sid用于选择商店的主键)

询问:

Cursor cursor = db.rawQuery("SELECT _store_id, item_code " +
                " FROM item_inventory" + 
                " WHERE _store_id = " + String.valueOf(sid),
        null);

产生一个结果,其中所有项目(包括重复项)都被返回。

结果:

 0 {
    _store_id=14
    item_code=852874006301
 }
 1 {
    _store_id=14
    item_code=852874006301
 }
 2 {
    _store_id=14
    item_code=041570110461
 }

然后我尝试计算每个项目的出现次数并返回仅包含不同item_code行的结果,但我还包括一个名为的新列item_inventory,该应该是item_code给定sid.

询问:

Cursor cursor = db.rawQuery("SELECT DISTINCT t1._store_id, t1.item_code, t2.item_quantity " +
                " FROM item_invnetory t1 " +
                " INNER JOIN (SELECT _store_id, item_code, count(item_code) AS item_quantity " +
                        " FROM item_inventory" +
                        " WHERE _store_id = " + String.valueOf(sid) +
                ") t2 " +
                " ON t1._store_id = t2._store_id " +
                " WHERE t1._store_id = " + String.valueOf(sid),
        null);

这给了我一个不同项目的列表,但是for的值item_inventory是不正确的,看起来好像是它在计算特定商店的所有项目的总数:

结果:

 0 {
    _store_id=14
    item_code=041570110461
    item_quantity=3
 }
 1 {
    _store_id=14
    item_code=852874006301
    item_quantity=3
 }

我真正希望实现的是使用SQLite查询,其中item_inventory存储位置中每个不同商品的商品总数的值。

所需结果示例:

 0 {
    _store_id=14
    item_code=041570110461
    item_quantity=1
 }
 1 {
    _store_id=14
    item_code=852874006301
    item_quantity=2
 }

对于我缺乏 SQLite 经验,我深表歉意,我通常不经常使用inner join和/或distinct我也不使用很多原始查询,但我的老板要求我使用 Android 创建一个项目并在 ListView 中显示所有内容。

肯尼

为此使用GROUP BY 子句,无需使用 JOIN 或 DISTINCT。

SELECT item_code, COUNT(*) as item_quantity
FROM item_inventory
WHERE _store_id = ?
GROUP BY item_code

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何计算行数并避免重复?

来自分类Dev

在SQL中返回重复的行数

来自分类Dev

如何在不计算SQLITE不同行中的重复值的情况下使用Count()?

来自分类Dev

如何计算scala中的重复值?

来自分类Dev

如何计算Crystal报表中的重复值?

来自分类Dev

jQuery如何通过不同的列值计算表中的行数

来自分类Dev

如何计算表中具有相同列值的行数?

来自分类Dev

如何仅返回MongoDB中字段的值

来自分类Dev

如何计算Phalcon查询返回的行数?

来自分类Dev

计算在laravel中查询返回的行数

来自分类Dev

计算OOP PHP中返回的行数

来自分类Dev

计算SQL ORACLE中返回的行数

来自分类Dev

如何仅打印文本文件中的重复值?

来自分类Dev

如何仅获取多维数组中的重复值

来自分类Dev

如何在sqlite计算字段中返回小数

来自分类Dev

计算堆栈中的重复值

来自分类Dev

计算 Multimap 中的重复值

来自分类Dev

如何计算JSON集合中的所有重复值?

来自分类Dev

我如何计算列表中的重复项并更改项目值

来自分类Dev

如何计算数据框列中重复值的频率?

来自分类Dev

如果仅(同一组具有不同值)意味着重复,如何计算重复值?

来自分类Dev

如何计算列中的行数但在计算数据阶段时排除 NULL 值?

来自分类Dev

计算存储在列表中的值所在的行数

来自分类Dev

SQLite Android rawQuery仅返回准确值

来自分类Dev

如何返回此数组中不重复的唯一值?

来自分类Dev

如何基于sqlite中的条件计算不同的值?

来自分类Dev

如何合并DISTINCT和计算合计值

来自分类Dev

如何仅返回存在的值?

来自分类Dev

如何根据(按元素)选定的相邻列计算重复的行数

Related 相关文章

热门标签

归档