mysql - 通过数据透视表连接两个表并在mysql中检索特定结果
问题描述
我的逻辑有问题,因为我不是数据库专家。我有三个表,一个看起来像这样的用户表:
id|名称 |type_id| 1|用户1| 1 | 2|用户2| 2 | 3|用户3| 2 | 4|用户4| 2 |
其中用户类型 id '2' 表示经理。公司表:
编号 | 姓名 | 1 | 鞋子| 2 | 裤子| 3 | 电视 | 4 | 灯|
还有一个数据透视表(companies_manager),它将一个或多个经理分配给一个或多个公司:
id|manager_id |company_id| 1| 2 | 1 | 2| 3 | 2 | 3| 4 | 3 | 4| 3 | 3 |
如您所见,一家公司可以有一个或多个经理,反之亦然。当我想检索不属于某个公司(例如公司 1,检索用户 3 和 4)但我不属于的经理(换句话说,用户类型 id 为“2”的用户)时出现问题t真的知道如何进行查询,因为虽然他们不属于公司1,但他们属于另一家公司。感谢提前!
解决方案
使用这个查询
SELECT user.*, compnies.*, compnies_manager.* FROM user LEFT JOIN compnies_manager ON user.type_id=compnies_manager.manager_id LEFT JOIN compnies ON compnies_manager.compny_id=compnies.id WHERE user.type_id=2
推荐阅读
- parallel-processing - sge 由于过载或满而丢弃的所有队列
- ibm-watson - 如何在 MessageResponse Watson Assistant Java 客户端中获取“操作”数据
- c# - 使用 Null 传播时出现 NullReferenceException
- qt - Qt示例程序可以执行命令行程序
- spring - 阔叶商务演示网站问题
- c# - 如何使用外键链接 3 个表?
- java - 如果父类中的方法“抛出异常”,我们可以在覆盖的方法中删除它吗
- android - 滚动时 Leanback 崩溃 ListRowPresenter
- javascript - 模型中的变量未更新
- c++ - 死锁使用 std::mutex 保护多线程中的 cout