从一个表中获取所有行的列表,满足两个不同表中的多个条件

时间:2015-02-16 16:24:17

标签: mysql node.js sequelize.js

我有4个表格 - employeecompanyemployee_companyaction

employee_company包含employee_idcompany_idaction除其他外,还包含employee_id

或者,employee_company拥有employeecompany的外键,action拥有employee的外键。

我正在试图找到一种方法来获取属于拥有多名员工的公司的所有员工的列表,并且该公司的员工在action表中没有条目。

我使用sequelize.js作为一个orm,所以原始SQL或通过sequelize做某种方式会有所帮助。

1 个答案:

答案 0 :(得分:1)

使用子查询查找具有多个员工的公司,以及左联接行动:

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子句 - 用操作过滤掉员工,因为当没有连接时,左连接行具有全空列。