选择带有外连接的查询

Posted

技术标签:

【中文标题】选择带有外连接的查询【英文标题】:Select query with outer join 【发布时间】:2016-05-04 01:12:44 【问题描述】:

我有两个表文件和雇员。

文件:

文件_ID|文件名 |修改者

   1      a.java        10
   2      b.java        11

员工:

标识|名称

10 拉胡尔 11 普里亚 12 罗希特

我想要做的是,打印所有文件名和修改该文件的人。我必须使用员工 ID 从表员工中获取 modifiedBy 人名。如果Employees 表中不存在employeeID,则不得抛出错误。 我被要求使用外连接来完成。请帮忙做这件事,因为我是这个话题的新手

【问题讨论】:

那个人有没有告诉你为什么要进行外部联接?你也可以添加预期结果吗? 【参考方案1】:

使用这个查询:

SELECT F.filename, E.name 
FROM Files AS F 
LEFT OUTER JOIN Employees AS E 
  ON F.modifiedBy = E.ID

Files 表:(带有一个额外的、不存在的 modifiedby id)

Employees 表:

输出:

编辑:

由于您使用的是 Oracle DBMS,因此您需要删除 AS 关键字:

SELECT F.filename, E.name 
FROM Files F 
LEFT OUTER JOIN Employees E 
  ON F.modifiedBy = E.ID

【讨论】:

非常感谢。但是当我尝试做同样的事情时,我得到了 sql 错误:ORA-00933: SQL command not properly ends 00933. 00000 - “SQL command not proper ending” 我在 oracle 中做的 啊,它是 Oracle,不是 mysql。尝试从命令中删除任何 AS 关键字并重试。 现在完美了!非常感谢..这真的很有帮助 我现在在文件“ApprovedBy”表中有另一列。所以我还需要打印 ApprovedBy Name,使用从 Files 表中获得的 ApprovedBy ID 以及从 Employees 表中获得的相应名称。请帮忙 @TeenaSam 请发布一个关于新表架构的新问题,我很乐意提供帮助。

以上是关于选择带有外连接的查询的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 查询构建器与 where 左外连接

带有外连接的休眠 HQL 查询

带有多个选择语句的 MySQL 右外连接非常慢

7-10外连接查询

带有自定义比较器的 Linq 左外连接

分页结果集中的选择子查询或左外连接哪个更快