SQL抱怨现有字段

时间:2015-09-25 21:11:32

标签: mysql sql ruby-on-rails

以下查询尝试执行可以表示为@users.courses的内容(其中@ user.id = 1)。我提供这些信息,因为我不确定这是否正确,因为查询没有运行

SELECT * FROM courses WHERE courses.id = 
 courses_users.user_id AND courses_users.user_id = 1

SQL抱怨:

  

#1054 - 'where子句'

中的未知列'courses_users.user_id'

我确信所有这些字段都存在,所以我不确定我做错了什么。

3 个答案:

答案 0 :(得分:2)

您的where子句引用了courses_users,但此表从未出现在wherejoin子句中。

您应该将其添加到from子句:

SELECT * 
FROM   courses, courses_users -- Here!
WHERE  courses.id = courses_users.user_id AND 
       courses_users.user_id = 1

或者,更好的是,使用明确的join子句:

SELECT * 
FROM   courses
JOIN   courses_users ON courses.id = courses_users.user_id -- Here!
WHERE  courses_users.user_id = 1

答案 1 :(得分:1)

您错过了JOIN。除非您courses_users,否则该声明并不了解JOIN。为此,您的查询需要看起来像这样:

SELECT * 
FROM courses 
JOIN courses_users ON
    courses.id = courses_users.user_id 
WHERE 
    courses_users.user_id = 1

答案 2 :(得分:1)

您是否尝试仅显示其中courses.id匹配不同表中不同值的记录?如果是这样,您需要将两个表连接在一起。您无法在没有连接的情况下比较来自两个不同表的两个不同字段。

这是一个关于SQL如何工作的教程:portfolio