Python 给定另一个表中的值,从一个表中检索计数

Python 给定另一个表中的值,从一个表中检索计数,python,sqlite,Python,Sqlite,我试图从一个表中获取一个值,并使用该值在另一个表上运行count()。我已经搜索了其他问题/答案来帮助解决我的问题,但是没有一个问题/答案是我能够适应SQLite中的场景的 经过几次不幸的尝试后,这是我的代码: c.execute("""SELECT MonkeyHouse.BananaType, count(*) FROM MonkeyVillage JOIN MonkeyHouse ON MonkeyVillage.BananaType = MonkeyHouse.Banana

我试图从一个表中获取一个值,并使用该值在另一个表上运行count()。我已经搜索了其他问题/答案来帮助解决我的问题,但是没有一个问题/答案是我能够适应SQLite中的场景的

经过几次不幸的尝试后,这是我的代码:

c.execute("""SELECT MonkeyHouse.BananaType, count(*)  
FROM MonkeyVillage 
JOIN MonkeyHouse 
   ON MonkeyVillage.BananaType = MonkeyHouse.BananaType 
GROUP BY MonkeyHouse.BananaType""")
因此,我试图从MonkeyHouse获取BanaTypes,并检查MonkeyVillage中有多少BanaTypes(而不是与MonkeyHouse合并的总数)

我的代码将从MonkeyHouse中选择BanaTypes,但当它从MonkeyVillage返回计数时,有些计数是准确的,而另一些则不准确

我如何解决这个问题

更新

MonkeyHouse中存在的值(尝试使用IPs搜索MonkeyVillage)

MonkeyVillage中的值(不包括其他IP)

我的代码返回:

(u'10.0.0.10', 1)  - Successful match
(u'10.168.77.10', 6)  - Unsuccessful 
(u'192.168.77.190', 1) - Successful match
(u'33.0.0.3', 2)  - Unsuccessful 

根据提供的数据,并假设您是在IP地址上加入的,查询结果看起来是正确的。当您在两个表之间联接时,结果将是表1中的记录数乘以表2中的匹配记录数,因此您的数字将成倍增加

假设“x2”表示IP地址存在2条记录,并且您只需要MonkeyVillage表中的结果计数,那么您可能需要在MonkeyVillage表中尝试一个“IN”子句

c.execute("""SELECT MonkeyVillage.BananaType, count(*)  
FROM MonkeyVillage
WHERE MonkeyVillage.BananaType IN (
SELECT MonkeyHouse.BananaType
FROM MonkeyHouse)
GROUP BY MonkeyVillage.BananaType""")

我修改了你的代码块以防止滚动。请提供您的表值,以便我们可以尝试复制。没有这些数据,我们无法确定为什么它对某些人是准确的,而对另一些人则是不准确的?他们是差一个还是两个,还是差一个?我们确实需要一些人来真正弄清楚到底发生了什么。也许是一个?太好了!非常感谢你!!(我将在原始帖子中添加关于MonkeyVillage伯爵的澄清,谢谢:)
(u'10.0.0.10', 1)  - Successful match
(u'10.168.77.10', 6)  - Unsuccessful 
(u'192.168.77.190', 1) - Successful match
(u'33.0.0.3', 2)  - Unsuccessful 
c.execute("""SELECT MonkeyVillage.BananaType, count(*)  
FROM MonkeyVillage
WHERE MonkeyVillage.BananaType IN (
SELECT MonkeyHouse.BananaType
FROM MonkeyHouse)
GROUP BY MonkeyVillage.BananaType""")