【问题标题】:Left join and right join together左连接和右连接在一起
【发布时间】:2016-07-06 12:44:16
【问题描述】:

我有三张桌子。

表 1 有 StudentName 和 StudentID 表 2 有 BookName 和 BookID 表 3 有 StudentID 和 BookID

我想检索这种格式的记录

学生姓名、书名

一个学生可以借很多书。

但我想要表 1 中所有学生的姓名,即使他没有借过一本书。

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

我只能检索已借阅学生的记录。

我将不胜感激建议和建议。

【问题讨论】:

  • 听起来像是功课。你已经尝试过什么?究竟是什么,你坚持?
  • 今天的提示:永远不要做正确的连接!你总是可以做一个左连接,只是切换表。左连接不难理解为“主表左连接可选数据”,但右连接是“可选数据右连接主​​表”。
  • 尝试发布您的架构定义和您尝试过的查询,以便人们可以帮助您。不要指望在这里复制粘贴作业并获得即时解决方案
  • 亲爱的 Mcha,Rich Benner,这是我尝试过的。 '代码' SELECT Table1.StudentID, Table1.StudentName, Table2.BookName FROM (Table1 INNER JOIN Table3 ON Table1.StudentID = Table3.StudentID) INNER JOIN Table2 ON Table3.BookID = Table2。书号; 'code' 我得到匹配的记录。但即使 Table3 中没有匹配项,我也需要 Table1 中的所有记录。 JSantos,我没想到你在想什么。只是一个人被困在愚蠢的事情上,第三个人可以立即看到。 Emile De Favas,将尝试您的建议并回复结果..

标签: sql join


【解决方案1】:

如果你想要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;

【讨论】:

  • 出现缺少操作员错误 (3075)。但肯定让我走上了正确的道路。这有帮助....SELECT Table1.StudentName, Table2.BookName FROM (Table1 LEFT JOIN Table3 ON Table1. StudentID = Table3.StudentID) </br> LEFT JOIN Table2 ON Table3.BookID = Table2. BookID;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
  • 2020-07-28
  • 2015-01-11
相关资源
最近更新 更多