我有两张桌子 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
答案 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
这将匹配记录并仅返回匹配记录,因此您的总和可能会正确显示。