2016-07-06 167 views
-4

我有三個表。左連接和右連接

表1有StudentName和StudentID 表2具有BOOKNAME和的BookID 表3具有StudentID和的BookID

我想在這個格式

StudentName檢索記錄,BOOKNAME

一個學生可能借了很多書。

但我想要表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; 

現在你想要的書的名稱,而不是bookidleft 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 FROM (Table1 LEFT JOIN Table3 ON Table1. StudentID = Table3.StudentID)
LEFT JOIN Table2 ON Table3.BookID = Table2。的BookID;' – dandy