2012-11-12 79 views
2
Select CH.id, CH.studentId, ST.name, CH.recordId, RC.name 
from checklist CH, student ST, record RC 
Where CH.studentId=ST.id and CH.recordId=RC.id 

上面是使用mysql的查询。上面的查询的问题是,当CH.recordId的值为null时,它不会显示任何结果。现在我的问题是如何显示结果,即使CH.recordId为空?并在mysql结果选项卡中,CH.recordId和RC.name列将仅为空。显示结果甚至为空值

谢谢。

回答

1

使用明确的联接语法,这样你可以做一个left join

select CH.id, CH.studentId, ST.name, CH.recordId, RC.name 
from checklist CH 
join student ST 
    on ST.id = CH.studentId 
left join record RC 
    on RC.id = CH.recordId 
0

LEFT JOIN的表,而不是INNER JOIN,并使用新的SQL-92的语法像这样:

SELECT CH.id, CH.studentId, ST.name, CH.recordId, RC.name 
FROM checklist CH 
LEFT JOIN student ST ON CH.StudentId = ST.id 
LEFT JOIN record RC ON CH.recordId = RC.id 
+0

SQL-92是20岁,几乎没有“新”。 :-) – Wyzard

+0

@Wyzard - 它比旧的89语法更新,OP使用WHERE来表示我的意思:-)。 –