从一个表中获取所有行的列表,满足两个不同表中的多个条件
我有4个表格 – employee
, company
, employee_company
company
和action
。
employee_company
包含employee_id
和company_id
,其中action
包含employee_id
。
或者, employee_company
对employee
和company
都有一个外键,而对employee
有一个外键。
我试图想出一个方法来获取属于拥有多名员工的公司的所有员工的列表,并且该公司的任何员工都没有在action
表中的条目。
我使用sequelize.js
作为orm,所以无论是原始SQL还是通过sequelize实现的一些方法都是有帮助的。
使用子查询来查找拥有多个员工的公司,然后左键联合执行操作:
select e.* from (select company_id from employee_company group by conpany_id having count(*) > 1) c join employee_company ec on ec.company_id = c.company_id join employee e on ec.employee_id = e.id left join action a on a.employee_id = e.id where a.employee_id is null
这应该是合理的自我解释,除了可能是where子句 – 用行动过滤掉员工,因为当没有连接时,左连接行具有全空列。