2016-02-26 148 views
0

假设我们有两个表
studentstudentID,姓名,部门标识)
departmentDepartmentID的,名称)。
我们的目标是使用子查询从两个表中检索数据。我试图如何使用子查询从多个表中检索数据?

select * from department, student 
where department.departmentID 
IN (select student.departmentID from student, department 
where student.departmentID = department.departmentID) 

但它返回两个表的行数的叉积。 这是可能的使用JOIN这样

select * from department 
Inner join student 
on student.departmentID = department.departmentID 

,并使用WHERE条款这样

select * from department, student 
where department.departmentID = student.departmentID 

我不知道是否有人能告诉我,以获得正确的结果如何则可以使用子查询中可以SQL。

+1

好像你们懂得编写一个查询来获取此信息(明确的'JOIN')的正确方法。我不明白你的问题的目的。 –

+0

如何使用子查询?这就是问题的目的@GordonLinoff –

+0

你没有任何谓词加入 - 所以当然你会得到一个笛卡儿的产品。 – Olli

回答

0

希望这有助于:

select *, (select name from department d where s.departmentID = d.departmentID) as dname 
from student s 
where (select name from department d where s.departmentID = d.departmentID) is not null 

这个问题却意味着使用连接来解决。要学习subQ,请使用适当的示例。

SQL小提琴:Test

+0

感谢您的答案。它为我工作。我将在下次继续使用正确的示例 –

+0

如果它解决了您的问题,请接受此答案。 – user2407394

+0

是的,我明白了。谢谢。 –

相关问题