我有3表狗,品种和参赛作品。我需要得到平均值(得分)从参赛作品,名称从狗和名称品种。
我已经成功地将2个表连接在一起,但我很难将最后一个对象(breeds.name
)附加到表中
SELECT AVG(score), dogs.name, dogs.breed_id
FROM entries
JOIN dogs
ON entries.dog_id = dogs.id
JOIN breeds
ON breeds.id = dogs.breed_id
GROUP BY breeds.name, dogs.name, dogs.breed_id
having count(entries.dog_id) > 1
order by AVG(score) DESC
LIMIT 10
当前结果:
如何将breed_id
改为breed.name
?
2条答案
按热度按时间ybzsozfc1#
考虑到您需要来自品种的名称、来自狗的名称和来自条目的AVG(得分),下面的SQL应该可以做到这一点。
g9icjywg2#
您已经在问题中回答了自己的问题。您所需要做的就是将
dogs.breed_id
替换为breeds.name
。由于这将在结果集中留下两个名为name
的列,因此您应该为它们添加别名以使其更清楚。假设id列被定义为PRIMARY KEY,您可以使用GROUP BY dogs.id(或entries.dog_id),因为两个非聚集列(dogs.name和breeds.name)在功能上都依赖于dogs.id。