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