我有以下查询:
CREATE TABLE Professor_Average
SELECT Instructor, SUM( + instreffective_avg + howmuchlearned_avg + instrrespect_avg)/5
FROM instreffective_average, howmuchlearned_average, instrrespect_average
GROUP BY Instructor;
它告诉我Instructor
含糊不清。我该如何解决这个问题?
答案 0 :(得分:2)
使用其来自的表的名称限定教师。
例如:instreffective_average.Instructor
如果你不这样做,SQL将猜测它来自哪个查询表,但是如果有2个或更多可能性,它不会尝试猜测并告诉你它需要帮助决定。
答案 1 :(得分:1)
您的查询很可能以多种方式失败。
除了关于表格限定列名的@Patashu told you之外,您还需要JOIN
正确使用表格。由于Instructor
在您的查询中含糊不清,我猜测(因缺乏信息)可能看起来像这样:
SELECT ie.Instructor
,SUM(ie.instreffective_avg + h.howmuchlearned_avg + ir.instrrespect_avg)/5
FROM instreffective_average ie
JOIN howmuchlearned_average h USING (Instructor)
JOIN instrrespect_average ir USING (Instructor)
GROUP BY Instructor
我添加了表别名以便于阅读。
这假设三个表各有一列Instructor
,可以通过它们连接起来。如果没有JOIN
条件,则会得到CROSS JOIN
,这意味着每个表的每一行都将与每个其他表的每一行组合。在大多数情况下非常昂贵的废话。
USING (Instructor)
是ON ie.Instructor = h.Instructor
的简短语法。它还将连接的(必须相同的)列折叠成一个。因此,如果我的示例中的Instructor
列表中没有符合条件的SELECT
,您就会离开。并非每个RDBMS都支持此标准SQL功能,但您未能提供更多信息。