2017-03-12 9 views
-1

私はSQLデータベースを使用している.NET(Visual Studio)でプロジェクトをやっています。私は同時にどのように多くの値を比較できるか知りたい。簡単な方法がありますか?&Sql:一度に多くの値を比較する

2つのテーブルの比較。たとえば:各学生のため

Table 1 (student) has: 
Name 
Id 
Book1 (art for example) 
Book2 (math) 
Book3 (math 2) 
Book4 (history) 
Book5 (physics) 

Table 2 (teacher) has: 
Name 
Id 
Book1 
Book2 
Book3 
Book4 
Book5 

は、私は先生の本(マッチングがあるかどうかを確認する)ことによって、彼の本(本自体の名前)を比較する必要があります。 また、データベースを効率的に使用できますか?

提案がありますか?

+0

データモデルを修正してください。どうやら、あなたは 'StudentBooks'と' TeacherBooks'というテーブルを持っているはずです。 –

+0

詳細を教えてください。 – FNM

答えて

0

プロジェクトを行うにはいくつかの方法があります。それがあなたの必要性、制約、あなたの能力などに依存するのは簡単かどうかではありません。

私が理解する限り、より良いデータベース設計のためには4つのテーブルが必要です。あなたは持っているでしょう。 (StudentBooks:学生(ID、名前)

  • 表2::教師(ID、名前)
  • 表3

    • 表1;(実際には、あなたはWhat is Normalisation (or Normalization)?を見るよりよい設計のための複数のテーブルを持っている必要があります) StudentId、NameOfTheBook)
    • 表4:TeacherBooks(TeacherId、NameOfTheBook)

    次に、あなたのようなSQL文を実行することができます。

    -- Fetch name of the books for a specific student 
    SELECT b.NameOfTheBook 
    FROM Students AS s INNER JOIN StudentBooks AS b ON s.Id = b.StudentId 
    WHERE s.Id = <id of the student> 
    
    -- Fetch name of the books for a specific teacher 
    SELECT b.NameOfTheBook 
    FROM Teachers AS t INNER JOIN TeacherBooks AS b ON t.Id = b.TeacherId 
    WHERE t.Id = <id of the student> 
    

    これは単なる例であり、モデルを拡張してより複雑なSQL文を実行できます。

  • 0

    以前の回答は、Books(Id、Name)を追加し、BooksBookとTeachersBooksのテーブルをBooksテーブルのIDに関連付けることを提案していますが、データベース構造をさらに正規化する利点をカバーしています。このようにして、書籍名の変更(スペルミスの修正)を行うことができます。長期的に見ると、より一貫性のあるデータが得られるはずです。

    関連する問題