首页 > 解决方案 > 通过数据透视表连接两个表并在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,但他们属于另一家公司。感谢提前!

标签: mysqldatabasephpmyadmin

解决方案


使用这个查询

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

推荐阅读