0

私はここに投稿したことがないので、これがうまくいくことを願っています:)。SQL Server 2008 R2 を使用しており、データベースから学生/コース情報を抽出しようとしています。これが私が扱っているものです:

テーブル dbo.StudentsSchedule

StudentsSchedule テーブルには、次のフィールドが含まれています: CRS_CODE CRS_SECT ID_NUMBER

テーブル dbo.StaffSchedule:

コースセクション Teacher_ID

これが私が達成しようとしていることです:

COURSE+SECTION CODE+Teacher_ID を組み合わせて、それを一意の「新しいコース ID」として使用し、それに Student を添付したいと考えています。

私はこれを試みましたが、結果が多すぎます。私は約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

Teacher_ID は、COURSE+SECTION ごとに 1 つしか存在できないことに注意してください。

何か案は?私はこれを間違っていますか?

4

1 に答える 1

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 で何が起こったのか見てください。値が重複しているように見えます。理由がわかりますか? 元の表をもう一度見てください。

私の悪い英語でごめんなさい!

于 2013-08-14T02:59:48.417 に答える