2017-02-10 12 views
0

外部キーの複数の値を使用して他のテーブルからレコードをフェッチする方法を教えてください。例: 私は以前に新入生の主題のための物語IDでした。私は主題表から主語の名前を取り出していました。今では、複数の科目の機能を統合しているので、学生のID列は次のようになります。120,140(2つの科目を意味する)今、別の表から科目名を取得するにはどうすればいいですか? 、私がそれらに参加するときの列のMATHS)。複数の外部キー値に結合

これは私の現在のクエリです:今、あなたが学生や書籍の間に多くの関係に多くをしました

SELECT t.* 
FROM 
    (SELECT ROWNUM AS rn, 
      t.* 
    FROM 
    (SELECT t.*, 
      s.subject_name 
     FROM STUDENT t 
     LEFT JOIN SUBJECTS s ON t.subject_id=s.subject_id) t) t 
WHERE rn BETWEEN ? AND ? 
+0

はあなたがMySQLを使っていますか? 'ROWNUM'はありません。 – Barmar

+1

カンマ区切りの値をテーブルの列に入れない*。各行に1対の多対多リレーションシップテーブルを使用します。 – Barmar

答えて

1

まあ。また、ベストプラクティスのためにDB構造を変更する必要があります。

は、私は非常にここで簡単に説明しましょうhere

を説明しました。

このシナリオでは、通常、ジャンクションテーブルと呼ばれる第3のテーブルが作成されます。両方の表のすべてのIDは、実際にはこの表の行です。

例。

次の方法で実装できます。

student: student_id, first_name, last_name 
books: book_id, book_name, book_author_etc 
student_books: book_id, student_id  # the junction table 

例クエリ:

// To get all the books for a student. 

SELECT b.book_id, name 
    FROM student_books sb 
    INNER JOIN books b ON b.book_id = sb.book_id 
    WHERE sc.student_id = Y