2014-11-05 97 views
2

我在连接两个表时遇到问题。左连接不起作用

我有两个表的字段[如下图]:

Table 1 : prospectus - 
      idprospectus(int(2)), subjectcode(varchar(40)), units(int(2)) 

Table 2 : Student - 
      studentid(int(10)), subjectcode(varchar(40)), grade(varchar(10)), remarks(varchar(30)) 

我要的就是连接这两个表,即使在学生表subjectcode的值不存在(招股说明书表包含所有科目或学科编号,而学生表只有在学生注册该科目时才有主题代码,并且还包含学生注册科目的等级。)

我已经尝试执行查询如下:

select p.subjectcode, s.grade, s.note 
from prospectus p 
left join student s on s.subjectcode=p.subjectcode 
where s.studentid='2011-10258' 
order by p.idprospectus 

但上面的查询只会给我:

-------------------------------- 
| subjectcode | grade | Note | 
-------------------------------- 
| Eng   | 89 | Passed | 
| Math  | 93 | Passed | 
| Sci   | 90 | Passed | 
-------------------------------- 

我已经使用右连接尝试,内,外连接,但它将所有给我相同的输出,如上图所示。

你可以参考我下面的首选输出:

-------------------------------- 
| subjectcode | grade | Note | 
-------------------------------- 
| Eng   | 89 | Passed | 
| Math  | 93 | Passed | 
| Sci   | 90 | Passed | 
| Soc   | NULL | NULL | 
| Lit   | NULL | NULL | 
-------------------------------- 

有人能帮助我摆脱这一点,好吗?

回答

3

这是因为您使用的是WHERE子句,请尝试使用AND来代替。

select p.subjectcode, s.grade, s.note 
from prospectus p 
left join student s on s.subjectcode=p.subjectcode 
AND s.studentid='2011-10258' 
order by p.idprospectus 
+1

非常感谢,它的工作! – 2014-11-05 09:14:52