如何显示{null}所有没有员工的公司

时间:2017-03-09 15:02:34

标签: mysql sql

您目前正在为组织维护联系人关系管理系统,以跟踪属于这些组织的组织和员工。系统会要求您清理其数据并识别所有未附加任何员工的组织。

您有两个表,组织和员工。组织与员工之间存在一对多的关系。 IE浏览器。组织可以拥有许多员工,员工属于组织。

组织:id整数名称字符串

Employees:id整数名称String organization_id Integer

分配:编写一个SQL查询,该查询将生成一个没有附加任何Employees的公司列表。

我试过了:

Select Organisation,Organisation.ID, Organisation.Name 
From Organisation 
Left Join Employees On organisationID = Employees Employees.ID 
order by Organisation,Organisation.name 

3 个答案:

答案 0 :(得分:1)

这个功课问题的关键可能是让你使用联接,这是将一个表中的数据与另一个表中的数据相关联的关键机制之一。

通常,SQL具有内部和外部联接,不同之处在于内部联接需要存在每个表中的记录以供查询生成结果记录。外连接仅要求一个表具有存在的记录。

左连接(左外连接)要求关键字 join 左侧的表有记录,而右连接(右外连接)要求关键字右侧的表 join 有记录。完整的外部联接允许左侧或右侧有记录。

如果连接的一端没有记录,那么结果记录的列值将为空,因此如果表中有一个非空(如主键)列,则可以始终通过过滤掉任何非空值来判断是否有记录。

例如(假设您的Id列已定义"非null",这通常是有效的,如果它不有效则设计有问题):

select
    *
  from Organizations
    left join Employees on
      Organizations.id = Employees.organization_id
  where Employees.organization_id is null
;

答案 1 :(得分:1)

它适合Join查询,其中organization_id将存在于Organization表中,但在Employee表中不存在(在其他字中为null)。

查询:编写一个SQL查询,该查询将生成一个没有附加任何员工的公司列表。

SELECT O.id, O.Name
FROM Organization AS O
LEFT JOIN Employees AS E
  ON O.id=E.organization_id
WHERE E.organization_id IS NULL

答案 2 :(得分:0)

组织:id整数名称字符串

Employees:id整数名称String organization_id Integer

您可以使用以下查询来获取没有员工的组织。

SELECT Org.id,Org.name from Organizations Org 
LEFT OUTER JOIN 
Employees Emp on Org.id=Emp.orgnization_id where Emp.id is null;