本学期我正在学习数据库管理课程,我正在研究我们得到的一个已分配的问题。我们应该创建一个数据库并为所描述的操作提供mysql语句。
发布我的行为如下所示:
获得与同一性别相同并与20岁学生住在同一个城镇的学生人数。
我尝试使用内部联接,但是我遇到了让我困惑的错误。我也试过匹配,但由于没有说明数据,这也没有用。
这是我的代码。
create table student (nr INTEGER PRIMARY KEY, town TEXT, birthdate
INTEGER, sex INTEGER, sname TEXT, ssurname TEXT);
create table lecturer (lnr INTEGER PRIMARY KEY, lname TEXT, lsurname TEXT);
create table course (cnr INTEGER PRIMARY KEY, cname TEXT, lnr INTEGER,
FOREIGN KEY fk_clnr (lnr)
REFERENCES lecturer (lnr) );
create table enrolledin (nr INTEGER, cnr INTEGER,
FOREIGN KEY fk_nr (nr)
REFERENCES student (nr),
FOREIGN KEY fk_cnr (cnr)
REFERENCES course (cnr) );
create table exam (lnr INTEGER, cnr INTEGER, nr INTEGER, note TEXT,
FOREIGN KEY fk_enr (nr)
REFERENCES student (nr),
FOREIGN KEY fk_ecnr (cnr)
REFERENCES course (cnr),
FOREIGN KEY fk_elnr (lnr)
REFERENCES lecturer (lnr) );
select nr, sex, town
FROM student
WHERE student AS S INNER JOIN matches M ON
S.sex = M.sex AND S.town = M.town WHEN nr = 20;
答案 0 :(得分:0)
获得与同一性别相同并与20岁学生住在同一个城镇的学生人数
您应该通过子选择解决此问题。我不明白为什么你使用连接。所有信息均由学生提供。
让我们开始吧:
首先你需要20岁的学生做爱:
SELECT sex FROM student WHERE nr = 20;
你需要20岁以下的学生小镇:
SELECT town FROM student WHERE nr = 20;
现在你需要学生数:
SELECT COUNT(*) FROM student;
至少你把所有东西放在一起:
SELECT COUNT(*) FROM student
WHERE sex = (
SELECT sex FROM student WHERE nr = 20
)
AND town LIKE (
SELECT town FROM student WHERE nr = 20
);