加入返回Null值?

时间:2017-03-21 00:02:54

标签: mysql sql database database-design

有人可以解释为什么除了我的代码返回的前四个记录之外我都得到Null值吗? 我的教师表只有4条记录,所以我想我的连接语法不正确。 对不起,我还没有完全理解加入。

USE Assignment
GO
CREATE VIEW PupilsAges AS
SELECT Pupil_ID,PupilDetails.FName,
PupilDetails.LName, PupilDetails.DOB,
DATEDIFF(year, GETDATE(),PupilDetails.DOB) AS "PupilAge",
Instrument,
(Teachers.FName+' '+Teachers.LName) AS Teacher
FROM Teachers JOIN  PupilDetails
ON  Teachers.ID = PupilDetails.Pupil_ID

2 个答案:

答案 0 :(得分:2)

您加入Teachers.ID = PupilDetails.Pupil_ID

这看起来是个问题,你没有列出表格的架构,但尝试类似的东西:

USE Assignment
GO
CREATE VIEW PupilsAges AS
SELECT Pupil_ID,PupilDetails.FName,
PupilDetails.LName, PupilDetails.DOB,
DATEDIFF(year, GETDATE(),PupilDetails.DOB) AS "PupilAge",
Instrument,
(Teachers.FName+' '+Teachers.LName) AS Teacher
FROM Teachers JOIN  PupilDetails
ON  Teachers.ID = PupilDetails.Teacher_ID

答案 1 :(得分:0)

您想要加入一个与两个表之间的数据相关的字段。在她的茶中,id字段应该识别一位老师。在pupilDetails中,pupil_id识别出一个瞳孔。您想加入teacher_id字段(如果存在)。

根据您当前的查询,您只有4名教师,所以一旦您通过了前4名学生,它就不知道有谁加入5+以上的学生。当你加入适当的领域时,老师应该重复。