【问题标题】:How to display {null} all companies with no employees如何显示 {null} 所有没有员工的公司
【发布时间】:2017-03-09 23:28:20
【问题描述】:

您目前正在为一个组织维护一个联系关系管理系统,他们在该系统中跟踪属于这些组织的组织和员工。您被要求清理他们的数据并识别所有没有任何员工的组织。

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

组织:id 整数名称字符串

员工:id 整数名称 String organization_id 整数

作业:编写一个 SQL 查询,该查询将生成一个没有任何员工附属于他们的公司的列表。

我试过了:

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

【问题讨论】:

  • 你好,我知道如何加入这两个表,但我不确定如何只显示没有附加员工的公司,而不是所有显示所有包含空字段的公司
  • 我已尝试选择组织、组织.ID、组织.名称>从组织>左加入>员工>在组织ID =员工雇员.ID>上按组织、组织.名称排序?任何帮助表示赞赏

标签: mysql sql


【解决方案1】:

这个作业问题的重点可能是让您使用联接,这是将一个表中的数据与另一个表中的数据相关联的关键机制之一。

一般 SQL 有内连接和外连接,不同之处在于内连接需要每个表中的记录都存在,以便查询产生结果记录。外连接只要求一个表有一条存在的记录。

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

如果联接的一侧没有记录,则结果记录的列值将包含空值,因此如果表中有非空(例如主键)列,您始终可以判断是否通过过滤掉任何非空值有一条记录。

例如(假设您的 Id 列定义为“非空”,这通常是有效的,如果它无效,则说明设计存在问题):

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

【讨论】:

  • 感谢您的帮助。
  • 不客气...如果你喜欢它,请点赞并标记为答案!
【解决方案2】:

它适合 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

【讨论】:

  • 谢谢,这是我不确定的地方。
【解决方案3】:

组织:id 整数名称字符串

员工:id 整数名称 String organization_id 整数

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    相关资源
    最近更新 更多