Android sqlite 3带内部联接的sum返回它应该返回的值的两倍

Android sqlite 3带内部联接的sum返回它应该返回的值的两倍,android,sql,sqlite,Android,Sql,Sqlite,我正在运行一个如下所示的查询 SELECT SUM(KILLCOUNT),SPECIES.SPECIES FROM TRIP_DATA JOIN SPECIES ON TRIP_DATA.SPECIES=SPECIES.SPECIESIDNO where TRIP_DATA.TRIPID=413 group by TRIP_DATA.SPECIES. 对于这次旅行(413),我得到了输出,2只兔子和6只兔子,但是我只在数据库中输入了1只兔子和3只兔子。我不明白为什么我要退回双倍于我想要的

我正在运行一个如下所示的查询

SELECT SUM(KILLCOUNT),SPECIES.SPECIES 
FROM TRIP_DATA  JOIN SPECIES
ON TRIP_DATA.SPECIES=SPECIES.SPECIESIDNO
where TRIP_DATA.TRIPID=413 
group by TRIP_DATA.SPECIES.
对于这次旅行(413),我得到了输出,2只兔子和6只兔子,但是我只在数据库中输入了1只兔子和3只兔子。我不明白为什么我要退回双倍于我想要的金额。任何对我的理解提出的建议或更正都将受到极大的欢迎

为了完整性,我在连接的两个表上附上create语句

"CREATE TABLE IF NOT EXISTS "
                    +TRIP_DATA
                    +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,TRIPID INTEGER NOT NULL,GMTTIMESTAMP INTEGER NOT NULL,LATITUDE REAL NOT NULL," +
                    "LONGITUDE REAL NOT NULL, ALTITUDE REAL,ACCURACY REAL,SPEED REAL,SPECIES INTEGER,KILLCOUNT INTEGER);


经过一段时间的研究,这就是我一直在寻找的答案

SELECT DISTINCT SPECIES.SPECIES,S.COUNT
FROM SPECIES 
INNER JOIN
(
    SELECT SUM(KILLCOUNT) AS COUNT,TRIP_DATA.SPECIES
    FROM TRIP_DATA
    WHERE TRIPID="+tripid+" AND NOT TRIP_DATA.SPECIES =0 
    GROUP BY TRIP_DATA.SPECIES
)S
ON SPECIES.SPECIESIDNO=S.SPECIES
据我所知(请注意,这在我的理解范围内),当您进行内部联接时,聚合函数在联接表的两个主键上工作

这意味着我最初的方法永远不会起作用,但是如果使用group buy生成一个内部语句,并使用on word将数据添加到已经分组的表中,它就会起作用


非常感谢您的评论,我希望能帮助其他人

您确定没有错误地在数据库中插入更多条目吗(您是否使用基本查询来测试您有多少条条目)?显示这些记录中的数据。如何将
从TRIP_数据连接物种
更改为
从TRIP_数据内部连接物种
(注意
internal
)关键字。我没有插入重复的条目,我已经在虚拟数据上运行了这个查询,并且我自己添加了列,它们是双重的。我已经尝试了内部联接,但这仍然给了我错误的结果,谢谢
SELECT DISTINCT SPECIES.SPECIES,S.COUNT
FROM SPECIES 
INNER JOIN
(
    SELECT SUM(KILLCOUNT) AS COUNT,TRIP_DATA.SPECIES
    FROM TRIP_DATA
    WHERE TRIPID="+tripid+" AND NOT TRIP_DATA.SPECIES =0 
    GROUP BY TRIP_DATA.SPECIES
)S
ON SPECIES.SPECIESIDNO=S.SPECIES