2015-04-06 119 views
-1

我有三個表,它們有以下幾種的MySQL獲得查詢總數爲每個分支

用戶表

+---------+-----------+--------+ 
| user_id | user_name | branch | 
+---------+-----------+--------+ 
| 1  | John  | 1  | 
| 2  | Jim  | 2  | 
| 3  | Jern  | 3  | 
| 4  | Jack  | 1  | 
| 5  | Jery  | 2  | 
| 6  | Tom  | 3  | 
| 7  | Sona  | 1  | 
| 8  | Tina  | 3  | 
+---------+-----------+--------+ 

分支表

+-----------+----------------+ 
| branch_id | branch_name | 
+-----------+----------------+ 
| 1   | IT    | 
| 2   | SALES   | 
| 3   | Administration | 
+-----------+----------------+ 

詢價表

+------------+---------------+---------+ 
| enquiry_id | enquiry_name | user_id | 
+------------+---------------+---------+ 
| 1   | enqury_test1 | 1  | 
| 2   | enqury_test2 | 2  | 
| 3   | enqury_test3 | 1  | 
| 4   | enqury_test4 | 3  | 
| 5   | enqury_test5 | 2  | 
| 6   | enqury_test6 | 5  | 
| 7   | enqury_test7 | 1  | 
| 8   | enqury_test8 | 2  | 
| 9   | enqury_test9 | 4  | 
| 10   | enqury_test10 | 6  | 
| 11   | enqury_test11 | 2  | 
| 12   | enqury_test12 | 7  | 
+------------+---------------+---------+ 

從上表中可以清楚的看出,每個分支都包含多個用戶。 這些用戶發佈多個查詢。 我需要查詢的總數在每個分支作爲

branch id => number of enquiries

我曾嘗試過各種查詢。但我無法得到結果。任何人都可以幫忙? 我正在使用MySQL,我需要一個單個查詢來做到這一點。

在此先感謝

+0

請放鬆一些成員已經發布了答案。你可以先檢查他的答案。 :) @Blank Head – 2015-04-06 09:29:26

回答

1

你需要countgroup by

select 
b.branch_id, 
count(e.user_id) as `total_enq` 
from Branch b 
left join User u on u.branch = b.branch_id 
left join Enquiry e on e.user_id = u.user_id 
group by b.branch_id 
+0

感謝@abhik。我會檢查它,並儘快回覆。 – 2015-04-06 09:33:05

+0

再次感謝@abhik。有用 :) – 2015-04-06 11:31:10

0

你必須執行的查詢,讓你期望的結果是這樣的: -

$query = "SELECT u.branch, COUNT(u.user_id) AS `total_enquires` 
      FROM enquiry e INNER JOIN user u ON e.user_id = u.user_id 
      GROUP BY u.branch" 

這將幫助你,我認爲你不需要加入分支表爲用戶表已經包含branch_id

0
SELECT 
     bt.branch_id 
     ,COUNT(enquiry_id) AS total_enquiry 
FROM 
    enquiry_table et 
    INNER JOIN user_table ut on ut.user_id = et.user_id 
    INNER JOIN branch_table bt ON bt.branch_id = ut.branch 
WHERE 
    1=1 
GROUP BY 
     bt.branch_id 

你可以試試這個

0

這是查詢

SELECT `branch`,`branch_name`,count(`user`.`user_id`),count(`enquiry_id`) FROM `user` inner join `branch` on `user`.`branch`=`branch`.`branch_id` inner join `enquiry` on `user`.`user_id`=`enquiry`.`user_id` group by `branch` 

這裏試試 http://sqlfiddle.com/#!9/cf3eb/1

相關問題