Mysql连接3表查询

标签 mysql sql

我有 3 个表,如下所示:

branch
id   name
---------
1    abc
2    xyz

users
id branch_id name
-----------------
1  1         aa
2  1         bb
3  2         cc
4  1         dd
5  2         ee

sales

id user_id product  price
1   1      xxxx     10
2   1      yyyy     20
3   2      zzzz     18
4   3      aaaa     12
5   2      bbbb     10
6   4      cccc     20

现在我想获得分支的总销售金额,例如:

branch_id total_price
---------------------
1         78     
2         12

为此,我编写了一个 sql 查询,例如:

SELECT SUM(s.price) , b.id
FROM sales s
JOIN branch b
GROUP BY id
HAVING s.user_id
IN (
SELECT id
FROM users
WHERE branch_id = b.id
)

但这并没有提供我想要的答案。请帮助我。

最佳答案

我认为这应该可以解决问题:

SELECT  branch.id AS branch_id, SUM(s.price) AS total_price
FROM branch
JOIN users  ON branch.id = users.branch_id
JOIN sales ON users.id = sales.user_id
GROUP BY branch.id;

您还可以使用INNER JOIN而不是JOIN(两者都在做同样的事情)。使用 INNER JOIN 可能更容易阅读,特别是您的查询包含其他类型的 JOIN,例如 LEFT JOINRIGHT JOIN

希望有帮助!

关于Mysql连接3表查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40157559/

相关文章:

php - "Change DB Prefix"wordpress 插件错误/问题 : redirecting all HTTP traffic to/wp-admin/install. php

SQL Server 相当于 Oracle 的 NULLS FIRST?

MySQL:如何检查提供的值是数字/整数还是字母?

mysql - SQL 错误 (1118) :Row size too large. 所用表类型的最大行大小,不包括 BLOB

PHP/MySQL - 递增变量名以循环获取数据

mysql - 如何使用 MYSQL 创建 3 路 LEFT JOIN?

php - 可扩展数据库设计 : automatic ALTER TABLE or serialize() field BLOB?

sql - 并发交易: reading data being modified

javascript - 每当节点服务器上的数据发生变化时写入整个 SQL 表(很奇怪,请耐心等待)

sql - join语句的操作顺序