2016-10-20 71 views
0

我有3個表像下:Mysql的加入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 
) 

但是,這並沒有提供我想要的答案。請幫幫我。

回答

1

我想這應該做的伎倆:

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

希望幫助!

+0

請告知OP INNER JOIN與JOIN相同。 INNER關鍵字是可選的。現在OP可能認爲這是兩種不同的加入方式。 – jarlh

+0

@jarlh感謝您的建議。那就是我想說的「你也可以用INNER JOIN而不是join」。但它似乎沒有形成那麼好。 –

1

你可以使用這樣的事情:

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