如何找到没有 1 名员工进行搜索的公司?

How to Find Companies that Does not have 1 Employee that Did a Search?

我想弄清楚如何编写 sql 语句(然后我需要将其转换为 EF Core Lambda,之后我不确定该怎么做)来解决我的问题。

问题

必须找到过去 x 天内按特定 "TrackingEvents"

筛选的所有不活跃公司

Companies
- Id
- Name

Branches
- Id
- Name
- CompanyId

Employees 
- Id
- Name
- BranchId

Tracking
- Id
- EmployeeId (nullable...there is tracking for non members)
- Name
- TrackingEventId

TrackingEvents
- Id
-Name

尝试

SELECT        Companies.Name
FROM            Branches INNER JOIN
                         Companies ON Branches.CompanyId = Companies.Id INNER JOIN
                         Employees ON Branches.Id = Employees.BranchId Left JOIN
                         Trackings ON Employees.Id = Trackings.EmployeeId
                         where Trackings.Id IS NULL
                         group by Companies.Name

我没有尝试按日期或跟踪事件进行过滤。

我认为不正确,因为我认为它正在做的是,如果公司中的 1 名员工没有进行搜索,那么公司将被退回。

我需要做的是以某种方式将所有员工、所有分支机构分组并将其视为一个整体。因此,如果 1 名员工符合条件,则跳过 "company"。

试试这个:

select distinct Id, Name From Companies c 
inner join Branches b on c.Id = b.CompanyId
inner join Employees  e on b.Id = e.BranchId
where not exists
(Select 1 From Tracking t where t.EmployeeId = e.Id)

告诉我

这returns家没有跟踪事件的公司是最近7天

select companies.Name
from Companies
left join
    (select b.CompanyID
     from branches b
     join employees e on e.branchID = b.id
     join tracking t on t.EmployeeID = e.id
     where [eventDate] > dateadd(day,-7, getdate())
     ) l on l.CompanyID=Companies.ID
where l.CompanyID is null
group by companies.Name