SELECT AVG只显示一个结果

时间:2013-03-19 20:17:51

标签: mysql sql select relational-database

对于车库数据库,尝试在部分测试期间查找制造商组件的平均分数。以下SQL似乎完美无缺:

SELECT component.manufacturer_id, AVG(section.grades) AS Grade_Average 
FROM section
INNER JOIN component
  ON section.mod_id=component.cid
GROUP BY component.manufacturer_id

但是只会给出一行结果(即只有一个manufacturer_id)

2 个答案:

答案 0 :(得分:1)

如果您想要返回所有manufacturer_id值,那么您需要使用LEFT JOIN

SELECT component.manufacturer_id, 
  AVG(section.grades) AS Grade_Average 
FROM component
LEFT JOIN section
  ON status.mod_id=component.cid  
GROUP BY component.manufacturer_id;

您当前的查询使用的是INNER JOIN,它只会返回两个表之间匹配的行。

您还在status.mod_id中使用JOIN,但是您正在加入section,是否需要在[{1}}中添加联接或在您的status中输入错误原帖?

答案 1 :(得分:0)

您在部分和组件之间有一个内部联接。如果特定制造商的两个表中都没有匹配的记录,那么将完全过滤掉它们。