内连接和总和()

时间:2013-09-11 16:46:29

标签: mysql sql sum inner-join

我有两张桌子 trip_data作为tripid,userid,species(int),killcount 具有species_id和speceies(字符串)

的masterspecies

我正在尝试检索旅行中看到的所有物种的清单 我希望得到

sum(killcount) : tripid :species (string):species (int)
57                 300    rabbit            1
2                  300    foxes             2 
1                  300    squirels          8

等等 我有下面的查询,它返回我想要的一切,除了总和(killcount)大约是8000,它应该是57。

任何帮助都会非常苛刻

SELECT sum(trips_data.killcount), 
  trips_data.species,trips_data.spceces,
  masterspecies.species 
from trips_data 
join masterspecies 
WHERE tripid=$tripid 
   AND userid=1 
   AND NOT killcount=0

2 个答案:

答案 0 :(得分:2)

您需要告诉数据库如何加入;否则你会得到所有可能的组合。看起来像trips_data.species应该匹配master_species.species_id;是对的吗?您还需要按物种对结果进行分组。

SELECT sum(trips_data.killcount), trips_data.species, masterspecies.species 
from trips_data join masterspecies
WHERE tripid=$tripid AND userid=1 and trips_data.species=masterspecies.species_id
group by trips_data.species, masterspecies.species;

答案 1 :(得分:1)

这是一个笛卡儿联盟:

from trips_data join masterspecies 

这将返回两个表中每个记录组合的记录。这通常不是意图。加入条件看起来像这样:

from trips_data
join masterspecies
on masterspecies.species_id = trips_data.species_id

这将匹配记录并仅返回匹配记录,因此您的总和可能会正确显示。