首页 > 解决方案 > MySQL 对 3 个表的连接查询

问题描述

用户表:

id  groupid username
1   1   user1 
2   1   user2
3   2   user3
4   2   user4

表:

id  groupname
1   group1
2   group2
3   group3

销售表:

id  userid  amount 
1   1   10
2   1   15
3   1   30
4   3   10
5   3   25

我想通过 groupid 而不是 userid 知道 sales 表中有多少行。但是 sales 表没有 groupid 字段。我怎样才能加入这 3 张桌子以获得我想要的东西?这可以通过一个连接查询来实现吗?

标签: mysqlsql

解决方案


三张表之间的用户INNER JOIN基于它们之间的(外)键关系,并使用WHEREgroupid的条件,仅获得特定的结果$groupid

SELECT sales.* FROM sales 
INNER JOIN user ON user.id = sales.userid 
INNER JOIN group ON group.id = user.groupid 
WHERE group.id = $groupid;

编辑: 正如评论中进一步询问的那样,要获得特定的销售额总和groupid,我们使用SUM函数。这是更新的查询:

SELECT SUM(sales.amount) AS total_sales  FROM sales 
INNER JOIN user ON user.id = sales.userid 
INNER JOIN group ON group.id = user.groupid 
WHERE group.id = $groupid;

推荐阅读