2017-05-25 87 views
0

我有一些用戶,他們在一段時間內可以有很多預訂。每個預訂可以有多個人。Mysql - 加入查詢的總計結果

查詢可能看起來像:

SELECT users.*, 
(SELECT COUNT(person) FROM person_to_booking WHERE person_to_booking.booking = bookings.id) AS people_per_booking 
FROM users 
LEFT JOIN bookings ON users.id = bookings.user 
GROUP BY users.id 

這返回一個結果,隨着人們最後的預訂數量。如果我刪除GROUP BY,那麼我會得到4行,每行都有相應的預訂人數。

我需要有一行,SUM()COUNT(person)。我怎樣才能做到這一點?

編輯

表的構成就像這樣:

Users 

id | name 
--------- 
1 | Dave 
2 | Bob 

Bookings 

id | user | company 
------------- 
1 | 1 | Big Group 
2 | 1 | Big Group 
3 | 2 | Small Company 

Person to Bookings 

id | person | bookings 
---------------------- 
1 | 1  | 1 
1 | 2  | 1 
1 | 3  | 1 
1 | 4  | 1 
1 | 5  | 2 
1 | 6  | 2 

這樣用戶就可以擁有預約對他們,然後預約可以有很多的人。

+0

表結構可能有助於回答..謝謝。 – roetnig

+0

@roetnig添加了一個示例結構。 –

+0

你的問題是什麼?也就是說,你想從數據中計算出什麼結果? –

回答

0

如果我正確理解你

SELECT users.*, 
SELECT SUM(cper) FROM (SELECT COUNT(person) as cper FROM person_to_booking WHERE person_to_booking.booking = bookings.id) AS people_per_booking 
FROM users 
LEFT JOIN bookings ON users.id = bookings.user 
GROUP BY users.id 
+0

字段列表中的未知列cper? –