首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空值的SQL连接问题

空值的SQL连接问题
EN

Stack Overflow用户
提问于 2014-03-20 00:47:43
回答 2查看 69关注 0票数 0

我在一个视图中使用了7个表。例如,我将使用这些字段作为我的表名(表中的字段对于这个PrimaryKey是tableName +ID的execpt来说并不重要)

表1.教师

表2.学生(例外--学生拥有其他6个表中的所有ids )

表3.科学

表4.数学

表5.历史记录

表6.德语

表7.语言艺术

现在,表3-7中的所有表都与表2中的学生有关系。学生与教师有关系。

如果我的表中有任何字段,那么我的视图就可以正常工作。有些可以是空的,如果我的表3-7中的任何一个是完全空的,它仍然会显示。

然而,我现在的问题是,如果我的老师没有分配给他们学生,就会使表2-7为空,等等。我的查询甚至没有返回填写的教师信息...名字、姓氏、出生日期等

我如何才能做到这一点呢?

我不知所措...

代码语言:javascript
复制
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 
EN

回答 2

Stack Overflow用户

发布于 2014-03-20 01:02:10

两条评论:

  • 你知道LEFT JOIN的用法吗?此查询应返回所有教师,即使没有学生。

SELECT * FROM SELECT LEFT JOIN学生s ON s.teacher_id = t.id

(如果你想要所有的学生,即使他们没有老师,右连接也是有效的)

  • 请记住,在SQL1中,== NULL和1 != NULL都为false。因此,以下查询不会得到没有学生的教师或没有教师的学生。

SELECT *

教师t,学生s,其中s.teacher_id = t.id

票数 0
EN

Stack Overflow用户

发布于 2014-03-20 02:04:37

我计算出了我的答案,在我的select中,我使用的是dbo.Student.TeacherID,而不是dbo.Teacher.TeacherID,因此我的查询总是返回空的TeacherID值,因为我使用如下的查询检查我的视图

代码语言:javascript
复制
    Select * from MyView Where TeacherID = 1;

这返回了null,因为我的select是拉取为null的Student.TeacherID,所以我把dbo.Student.TeacherID换成了dbo.Teacher.TeacherID,现在这个问题已经解决了。

这是多么美妙的时刻。感谢您的评论和回复!

当我在阅读我的作品时,我说我选择了

代码语言:javascript
复制
SELECT  Teacher.TeacherID ,
    Student.StudentID , 

技术上是个打字错误,但也是我的答案...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22512704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档