结果太多 - SQL连接问题

时间:2013-08-14 01:16:03

标签: sql sql-server-2008 join

我从来没有在这里发帖,所以希望这很顺利:)。我正在使用SQL Server 2008 R2,我正在尝试从数据库中提取学生/课程信息。这是我正在处理的事情:

表dbo.StudentsSchedule

StudentsSchedule表包含以下字段: CRS_CODE CRS_SECT ID_NUMBER

表dbo.StaffSchedule:

当然 部分 Teacher_ID

这是我想要完成的事情:

我想将COURSE + SECTION CODE + Teacher_ID结合使用,将其用作唯一的“新课程ID”,然后将学生附加到其中。

我试过这个但是我的结果太多了。我期待大约300但接收超过10K +

 SELECT dbo.StaffSchedule.COURSE+'-'+ dbo.StaffSchedule.SECTION+'-'+dbo.StaffSchedule.Teacher_ID) as [NewCourseID],
          dbo.StudentSchedule.ID_NUMBER AS [StudentID],
          from dbo.StaffSchedule INNER JOIN dbo.StudentSchedule ON
   dbo.StaffSchedule.COURSE=dbo.StudentSchedule.CRS_CODE and
   dbo.StaffSchedule.SECTION=dbo.StudentSchedule.CRS_SECT

请注意,每个COURSE + SECTION只能存在一次Teacher_ID。

有什么想法吗?我做错了吗?

1 个答案:

答案 0 :(得分:1)

让我们试着看看它

表dbo.StaffSchedule:

COURSE SECTION Teacher_ID

  1       1      23
  1       1      24
  1       3      55
  1       3      24

表dbo.StudentsSchedule:

CRS_CODE CRS_SECT ID_NUMBER

   1        1       44
   1        1       45
   1        3       89
   1        3       44

此代码:

   SELECT dbo.StaffSchedule.COURSE+'-'+ dbo.StaffSchedule.SECTION+'-'+dbo.StaffSchedule.Teacher_ID) as [NewCourseID], dbo.StudentSchedule.ID_NUMBER AS [StudentID]
   from dbo.StaffSchedule INNER JOIN dbo.StudentSchedule ON
   dbo.StaffSchedule.COURSE=dbo.StudentSchedule.CRS_CODE and
   dbo.StaffSchedule.SECTION=dbo.StudentSchedule.CRS_SECT

将返回:

NewCourseID StudentID

   1-1-23        44
   1-1-23        45
   1-1-24        44
   1-1-24        45
   1-3-55        89
   1-3-24        89
   1-3-55        44
   1-3-24        44

可能是我看到的唯一问题是,对于相同的StudentID,您有多个值。我不知道你在演什么,所以我很乐意帮助你。

抱歉我的英语不好!我希望这可以帮助你!

为新评论编写

在NewCourseId中使用de Section非常简单

   SELECT dbo.StaffSchedule.COURSE+'-'+dbo.StaffSchedule.Teacher_ID) as [NewCourseID],   dbo.StudentSchedule.ID_NUMBER AS [StudentID]
   from dbo.StaffSchedule INNER JOIN dbo.StudentSchedule ON
   dbo.StaffSchedule.COURSE=dbo.StudentSchedule.CRS_CODE and
   dbo.StaffSchedule.SECTION=dbo.StudentSchedule.CRS_SECT

但是......会发生什么? 结果将是:

NewCourseID StudentID

   1-23        44
   1-23        45
   1-24        44
   1-24        45
   1-55        89
   1-24        89
   1-55        44
   1-24        44

看看ID 1-24发生了什么,看起来有重复的值,你明白为什么吗?再看一下原始表格。

抱歉我的英文不好!