家庭作业的问题是:编写一个SQL查询以列出所有参加Web和数据库计算的学生的姓名。 这里有三个表:enrolments students subjects这3个表位于名为 Enrollment 的同一数据库中。
我试图将三个表组合在一起并打印出整个表,它可以正常工作!
MariaDB [enrolment]> SELECT *
-> FROM students st
-> JOIN enrolments en
-> ON st.student_id=en.student_id
-> JOIN subjects su
-> ON en.subject_code = su.subject_code
-> WHERE su.name='Web and Database Computing';
但是,我只想打印出所有参加Web和数据库计算的学生的姓名,所以我更改代码:
MariaDB [enrolment]> SELECT name FROM students st
-> JOIN enrolments en
-> ON st.student_id=en.student_id
-> JOIN subjects su
-> ON en.subject_code = su.subject_code
-> WHERE su.name='Web and Database Computing';
这给了我错误
错误1054(42S22):“字段列表”中的未知列“ students.name”
答案 0 :(得分:2)
您可以将name替换为st.name,因为您给别名students表指定了st 名称用st.name替换(因为在学生表名称字段以及科目表可用名称中,您可以指定必填别名点列名称) 如下...
SELECT st.name
FROM students st
JOIN enrolments en
ON st.student_id=en.student_id
JOIN subjects su
ON en.subject_code = su.subject_code
WHERE su.name='Web and Database Computing';
答案 1 :(得分:0)
尽管MySQL并未引发歧义错误,但Name在这里似乎是一个含糊的栏目,因为它同时存在于Subject和Student中。所以,请您尝试一下:
st.name
而不是name
?