mysql - 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 张桌子以获得我想要的东西?这可以通过一个连接查询来实现吗?
解决方案
三张表之间的用户INNER JOIN基于它们之间的(外)键关系,并使用WHERE
groupid的条件,仅获得特定的结果$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;
推荐阅读
- spring - Oauth2、本机应用程序和令牌窃取
- elasticsearch - Elasticsearch 中的 MUST 和 MUST_NOT 查询
- java - 从字符串变量中的休息服务获取异常
- javascript - Javascript Date 对象未显示正确的月份
- c# - EF Core SQLITE - SQLite 错误 19:'UNIQUE 约束失败
- python - 将 Python 添加到 Windows 路径
- javascript - String .replace() does not work with '$' symbol
- ios - 将 alpha 设置为 0.0 后无法点击 UIButton,即使重置为 1.0
- openid - OpenID Connect 授权码字符串的格式是什么?
- vhdl - 在 VHDL 中使用 VARIABLE 时从不使用输入问题