Mysql SQL联接4个表
到目前为止,这是我得到的,但不起作用。需要从student表中获取IT学生的姓名,这些学生是由名为Hoffman的导师在某个班级注册的,所有这些学生都来自已注册的、班级和导师表。 我哪里做错了 类别:Mysql SQL联接4个表,mysql,Mysql,到目前为止,这是我得到的,但不起作用。需要从student表中获取IT学生的姓名,这些学生是由名为Hoffman的导师在某个班级注册的,所有这些学生都来自已注册的、班级和导师表。 我哪里做错了 类别: (SELECT s.sid, s.sname, e.ccode FROM student s INNER JOIN enrolled e ON s.sid = e.sid WHERE s.programme = 'IT') WHERE EXISTS (SELECT c.ccode, c.tid
(SELECT s.sid, s.sname, e.ccode
FROM student s INNER JOIN enrolled e
ON s.sid = e.sid
WHERE s.programme = 'IT')
WHERE EXISTS
(SELECT c.ccode, c.tid
FROM class c INNER JOIN tutor t
ON c.tid = t.tid
WHERE t.tname = 'Hoffman');
导师:
ccode | cname | weekday | meets at | room | tid
________________________________________________________________________
CIS166 | Intro to Comp | Tue | 10:00:00 | MB300 | 1
________________________________________________________________________
CIS177 | Maths | Mon | 15:00:00 | MB100 | 6
________________________________________________________________________
CIS188 | Info Syst | Thu | 14:00:00 | MB230 | 5
________________________________________________________________________
CIS199 | Intro to Java | Fri | 10:00:00 | MB300 | 4
________________________________________________________________________
CIS277 | Algorithmics | Thu | 14:00:00 | MB200 | 2
________________________________________________________________________
CIS288 | Database Syst | Mon | 14:00:00 | MB142 | 1
________________________________________________________________________
CIS297 | Web Design | Mon | 16:00:00 | MB109 | 3
________________________________________________________________________
CIS298 | C++ | Fri | 10:00:00 | MB110 | 8
登记人数:
tid | tname
_____________________
1 | Rob Hoffman
_____________________
2 | James Butler
_____________________
3 | Kathy Bond
_____________________
4 | Theodora Stewart
_____________________
5 | Mike Richie
_____________________
6 | John Kay
_____________________
7 | Mary Tregear
_____________________
8 | Mark Robinson
学生:
sid | ccode
______________
211 | CIS288
203 | CIS298
214 | CIS297
105 | CIS177
215 | CIS297
104 | CIS188
210 | CIS297
338 | CIS320
102 | CIS177
338 | CIS399
204 | CIS288
204 | CIS277
102 | CIS199
203 | CIS297
105 | CIS199
331 | CIS320
202 | CIS299
205 | CIS299
210 | CIS298
331 | CIS399
321 | CIS399
210 | CIS288
210 | CIS277
204 | CIS297
321 | CIS320
328 | CIS388
327 | CIS388
211 | CIS297
333 | CIS399
215 | CIS288
104 | CIS199
在没有看到您的模式的情况下,这是一个猜测,但应该为您指出正确的方向:
sid | sname | programme | level | age
____________________________________________
101 | Lorry Ross | CS | 1 | 18
102 | Lydia Ken | CIS | 1 | 18
103 | Bob Chung | CS | 1 | 18
104 | Sonia Morris | CIS | 1 | 18
105 | Mark Poppy | CS | 1 | 19
106 | Megan Chi | IT | 1 | 20
218 | Diana McDon | IT | 2 | 20
219 | Nick Smith | IT | 2 | 21
在没有看到您的模式的情况下,这是一个猜测,但应该为您指出正确的方向:
sid | sname | programme | level | age
____________________________________________
101 | Lorry Ross | CS | 1 | 18
102 | Lydia Ken | CIS | 1 | 18
103 | Bob Chung | CS | 1 | 18
104 | Sonia Morris | CIS | 1 | 18
105 | Mark Poppy | CS | 1 | 19
106 | Megan Chi | IT | 1 | 20
218 | Diana McDon | IT | 2 | 20
219 | Nick Smith | IT | 2 | 21
您的查询不起作用,因为
exists
块与top select语句没有关系。您需要找到一种方法,将导师
和班级
表与学生
和注册
表关联起来。换句话说,您应该能够仅使用4个表和相应的where子句之间的内部联接来表达整个查询。您的查询不起作用,因为exists
块与top select语句之间没有关系。您需要找到一种方法,将导师
和班级
表与学生
和注册
表关联起来。换句话说,您应该能够仅使用4个表和适当的where子句之间的内部联接来表示整个查询。我将按照Red提供的相反方式处理查询。。。你认识导师,并且为那个人的学生钻研。。。如果有一位导师与我有关,比如。。。3节课,为什么要查询一个可能有10000名学生的表
select s.sid, s.sname, e.ccode
from student s
inner join enrolled e on s.sid = e.sid
inner join class c on e.ccode = c.ccode --may be incorrect
inner join tutor t on c.tid = t.tid
where s.programme = 'IT'
and t.tname = 'Hoffman'
我会按照Red提供的相反方式进行查询。。。你认识导师,并且为那个人的学生钻研。。。如果有一位导师与我有关,比如。。。3节课,为什么要查询一个可能有10000名学生的表
select s.sid, s.sname, e.ccode
from student s
inner join enrolled e on s.sid = e.sid
inner join class c on e.ccode = c.ccode --may be incorrect
inner join tutor t on c.tid = t.tid
where s.programme = 'IT'
and t.tname = 'Hoffman'
请向我们展示表结构(以及足以进行查询的字段)。现在,查询的两个部分没有链接字段,很难建议它们存在的位置。请向我们展示表结构(带有足够用于查询的字段)。现在,查询的两个部分没有链接字段,很难建议它们存在的位置。这将显示选定的列标题,但没有结果。我假设查询计划器将自行考虑实际表,并自行决定对表的访问顺序。在本例中,RedFilter的方式和您的方式应该没有区别。这会显示选定的列标题,但不会显示结果。我假设查询计划器将自行考虑实际表,并自行决定对表的访问顺序。对于本例,RedFilter的方式和您的方式应该没有区别。这再次显示选定的列标题但没有结果?这并不奇怪,因为示例数据中没有名为“Hoffman”的导师。这再次显示选定的列标题但没有结果?这并不奇怪,因为示例数据中没有名为“Hoffman”的导师。