Mysql连接3表查询
我有如下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
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谢谢你的建议。这就是我想说的“你也可以使用内部连接而不是连接”!但它似乎没有那么好。