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

标签 mysql node.js sequelize.js

我有 4 个表 - employeecompanyemployee_companyaction

employee_company 包含 employee_idcompany_idaction 包含 employee_id.

或者,employee_company 有一个指向 employeecompany 的外键,而 action 有一个外键给员工

我正在尝试找出一种方法来获取属于拥有多个员工的公司的所有员工的列表,并且该公司的任何员工都没有在 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 子句 - 过滤掉具有操作的员工,因为在没有连接时左连接行具有全空列。

关于mysql - 从一个表中获取所有行的列表,满足两个不同表中的多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28545897/

相关文章:

mysql - 使用关联和外键对 findAll 进行后续处理

mysql - Mysql下创建数据库很慢

node.js - pg.connect 不工作,但 psql 用于本地 postgres 数据库。我究竟做错了什么?

mysql自动增量值没有按顺序更新

node.js - 如何编写使用多个文件的 NPM 模块?

node.js - npm 错误! cb() 从未调用过!尝试运行 npm install 命令时出错

javascript - Sequelize hasMany 和belongsTo 问题

javascript - 运行 Node server.js 并重新播种数据库时,表被删除。 Sequelize

mysql - 在 Perl 中使用 CSV 更新 MYSQL 数据库?

mysql ifnull(...) 是否会阻碍索引的使用?