2016-07-06 165 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