Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL联接4个表_Mysql - Fatal编程技术网

Mysql SQL联接4个表

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

到目前为止,这是我得到的,但不起作用。需要从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
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”的导师。