Mysql连接3表查询

Mysql连接3表查询,mysql,sql,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

我有如下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 u.branch_id, SUM(s.price) AS total_price
FROM sales AS s INNER JOIN users u ON s.user_id = user.id
GROUP BY u.branch_id
ORDER BY u.branch_id

您可以使用以下内容:

SELECT u.branch_id, SUM(s.price) AS total_price
FROM sales AS s INNER JOIN users u ON s.user_id = user.id
GROUP BY u.branch_id
ORDER BY u.branch_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;
您还可以使用
内部联接
而不是
联接
(两者都在做相同的事情)。使用
内部连接
可能更容易阅读,尤其是您的查询包含其他类型的
连接
,如
左连接
右连接


希望有帮助

我认为这应该可以做到:

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;
您还可以使用
内部联接
而不是
联接
(两者都在做相同的事情)。使用
内部连接
可能更容易阅读,尤其是您的查询包含其他类型的
连接
,如
左连接
右连接


希望有帮助

请通知OP内部联接与联接相同。内部关键字是可选的。现在,OP可能会认为这是两种不同的加入方式。@jarlh谢谢你的建议。这就是我想说的“你也可以使用内部连接而不是连接”!但它似乎没有那么好。请告诉OP,内部连接和连接是一样的。内部关键字是可选的。现在,OP可能会认为这是两种不同的加入方式。@jarlh谢谢你的建议。这就是我想说的“你也可以使用内部连接而不是连接”!但它似乎没有那么好。