我在一个视图中使用了7个表。例如,我将使用这些字段作为我的表名(表中的字段对于这个PrimaryKey是tableName +ID的execpt来说并不重要)
表1.教师
表2.学生(例外--学生拥有其他6个表中的所有ids )
表3.科学
表4.数学
表5.历史记录
表6.德语
表7.语言艺术
现在,表3-7中的所有表都与表2中的学生有关系。学生与教师有关系。
如果我的表中有任何字段,那么我的视图就可以正常工作。有些可以是空的,如果我的表3-7中的任何一个是完全空的,它仍然会显示。
然而,我现在的问题是,如果我的老师没有分配给他们学生,就会使表2-7为空,等等。我的查询甚至没有返回填写的教师信息...名字、姓氏、出生日期等
我如何才能做到这一点呢?
我不知所措...
SELECT Teacher.TeacherID ,
Student.StudentID ,
Science.ScienceID ,
History.HistoryID ,
Math.MathID ,
German.GermanID ,
LanguageArts.LanguageArtsID
FROM dbo.Teacher AS Teacher
LEFT OUTER JOIN dbo.Student
ON dbo.Student.TeacherID = Teacher.TeacherID
LEFT OUTER JOIN dbo.Science AS Science
ON dbo.Student.ScienceID = Science.ScieneID
LEFT OUTER JOIN dbo.Math AS Math
ON dbo.Student.MathID = Math.MathID
LEFT OUTER JOIN dbo.History AS History
ON dboStudent.HistoryID = History.HistoryID
LEFT OUTER JOIN dbo.German AS German
ON dbo.Student.GermanID = German.GermanID
LEFT OUTER JOIN dbo.LanuageArts AS LanguageArts
ON dbo.Student.LanguageArtsID = LanguageArts.LanguageArtsID 发布于 2014-03-20 01:02:10
两条评论:
SELECT * FROM SELECT LEFT JOIN学生s ON s.teacher_id = t.id
(如果你想要所有的学生,即使他们没有老师,右连接也是有效的)
SELECT *
教师t,学生s,其中s.teacher_id = t.id
发布于 2014-03-20 02:04:37
我计算出了我的答案,在我的select中,我使用的是dbo.Student.TeacherID,而不是dbo.Teacher.TeacherID,因此我的查询总是返回空的TeacherID值,因为我使用如下的查询检查我的视图
Select * from MyView Where TeacherID = 1;这返回了null,因为我的select是拉取为null的Student.TeacherID,所以我把dbo.Student.TeacherID换成了dbo.Teacher.TeacherID,现在这个问题已经解决了。
这是多么美妙的时刻。感谢您的评论和回复!
当我在阅读我的作品时,我说我选择了
SELECT Teacher.TeacherID ,
Student.StudentID , 技术上是个打字错误,但也是我的答案...
https://stackoverflow.com/questions/22512704
复制相似问题