Sql 左连接和右连接在一起

Sql 左连接和右连接在一起,sql,join,Sql,Join,我有三张桌子 表1包含StudentName和StudentID 表2包含BookName和BookID 表3包含StudentID和BookID 我想检索这种格式的记录 学生名 一个学生可以借很多书 但我想把所有学生的名字都列在表1中,即使他没有借过一本书 我知道这很简单,但我就是做不好 我只能检索借来的学生的记录 我将非常感谢您的建议。如果您希望所有学生都在表1中,您必须从表1开始 select studentname from table1; 然后你想要借来的书,即使书单是空的,也

我有三张桌子

表1包含StudentName和StudentID 表2包含BookName和BookID 表3包含StudentID和BookID

我想检索这种格式的记录

学生名

一个学生可以借很多书

但我想把所有学生的名字都列在表1中,即使他没有借过一本书

我知道这很简单,但我就是做不好

我只能检索借来的学生的记录


我将非常感谢您的建议。

如果您希望所有学生都在表1中,您必须从表1开始

select studentname 
from   table1;
然后你想要借来的书,即使书单是空的,也要保留学生:让我们使用left join

现在,您需要的是图书的名称,而不是图书ID。再次左键连接


听起来像是家庭作业。你已经试过什么了?你到底在做什么?今天的提示:永远不要做正确的事!您可以始终执行左连接,只需切换表即可。左联接不像主表左联接可选数据那么难理解,但右联接是右联接主表的可选数据。请尝试发布您的架构定义和您尝试的查询,以便人们可以帮助您。不要指望在这里复制粘贴作业并得到即时解决亲爱的Mcha,Rich Benner,这就是我所尝试的。”代码“从表1上的表1内部联接表3中选择表1.StudentID、表1.StudentName、表2.BookName。StudentID=表3.StudentID内部联接表2(表3.BookID=表2)。BookID;'代码“我正在获取匹配的记录。但我需要表1中的所有记录,即使表3中没有匹配项。杰桑托斯,我没想到你会这么想。只是一个人被无聊的事情缠住了,第三个人马上就能看到。Emile De Favas,将尝试您的建议并回复结果..获得一个缺少的操作员错误3075。但这确实让我走上了正确的道路。这有助于。。。。从表1左侧选择Table1.StudentName、Table2.BookName,然后在表1上连接Table3。StudentID=Table3。StudentID左键连接Table3上的Table2。BookID=Table2。图书编号;
select    table1.studentname, 
          table3.bookid 
from      table1 
left join table3 on table1.studentid=table3.studentid;
select    table1.studentname, 
          table2.bookname 
from      table1 
left join table3 on table1.studentid = table3.studentid 
left join table2 on table3.bookid = table2.bookid;