【发布时间】:2020-04-21 19:34:40
【问题描述】:
我有这个 SQL 代码:
CREATE TABLE STUDENT
(
sid int PRIMARY KEY,
sname varchar(20) NOT NULL,
saddress varchar(20) NOT NULL
)
CREATE TABLE COURSE
(
cid int PRIMARY KEY,
cname varchar(20) NOT NULL,
ccredit int NOT NULL
)
CREATE TABLE REGISTER
(
eid int PRIMARY KEY,
sid int NOT NULL,
cid int NOT NULL,
edate date NOT NULL,
FOREIGN KEY (sid) REFERENCES STUDENT (sid)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (cid) REFERENCES COURSE (cid)
ON DELETE CASCADE ON UPDATE CASCADE
)
但是当我想显示注册“数据库”主题的学生的全部详细信息时,我收到以下错误:
消息 209,第 16 级,状态 1,第 11 行
不明确的列名“sid”消息 209,第 16 级,状态 1,第 11 行
不明确的列名“cid”
这是查询代码,谁能告诉我我在这里做错了什么?
SELECT eid, edate, cname, sname, saddress, sid, cid
FROM register r
JOIN course c ON c.cid = r.cid
JOIN student s ON r.sid = s.sid
WHERE cname = 'database';
【问题讨论】:
-
始终限定所有列是一种很好的编程习惯,至少在涉及多个表时是这样。就像
r.sid而不是sid。 -
好的,我试试这个
标签: sql sql-server