2016-07-06 3 views
-4

私は3つのテーブルを持っています。左への結合と右への結合

表1はStudentNameとStudentID 表2はBookNameとBookID 表3を持っていStudentIDとBookID

私はこの形式でレコードを取得するた

StudentName、BookName

一人の学生5月多くの本を借りる。

しかし、本を借りなかったとしても、表1のすべての生徒の名前が必要です。

私はそれが簡単だと知っていますが、私はそれを正しく理解できません。

私は、借りた学生のレコードしか取得できません。

私はアドバイスと提案に感謝します。

+1

音が宿題のようです。何を試しましたか?どういうことですか? –

+1

今日のヒント:決して右の結合をしないでください!代わりに左の結合を行うことができます。テーブルを切り替えるだけです。左のジョインは、「メインテーブルはオプションのデータを残す」と理解するのは難しいことではありませんが、右のジョインは「オプションのデータを右メインテーブルに結合する」ものです。 – jarlh

+1

あなたのスキーマ定義と試したクエリを投稿して、人々があなたを助けることができるようにしてください。ペースト宿題をここにコピーして瞬間的な解決策を得ることを期待しないでください – JSantos

答えて

2

すべての生徒をtable1にしたい場合は、まずそれを開始する必要があります。

select studentname 
from table1; 

あなたが本を借りたと書籍のリストが空の場合でも、学生を維持したい:のはleft joinを使ってみましょう。

select table1.studentname, 
      table3.bookid 
from  table1 
left join table3 on table1.studentid=table3.studentid; 

bookidの代わりに本の名前が必要になりました。 left join再び

select table1.studentname, 
      table2.bookname 
from  table1 
left join table3 on table1.studentid = table3.studentid 
left join table2 on table3.bookid = table2.bookid; 
+0

オペレーターエラー(3075)が見つかりませんでした。しかし確かに私は正しい道をつかまえました。これは助けられました.... 'SELECT Table1.StudentName、Table2.BookName から (表1 LEFT JOINテーブル3 ONテーブル1 StudentID = Table3.StudentID)
LEFT JOIN Table2 ON Table3.BookID = Table2。 BookID; ' – dandy

関連する問題