以下查询尝试执行可以表示为@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'
我确信所有这些字段都存在,所以我不确定我做错了什么。
答案 0 :(得分:2)
您的where
子句引用了courses_users
,但此表从未出现在where
或join
子句中。
您应该将其添加到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