2017-05-25 41 views
0

私はある期間に多くの予約を持つことができるユーザーがいます。各予約は複数の人を持つことができます。Mysql - 結合クエリの結果の合計

クエリは次のようになります。これは、人々の最後の予約番号で、1件の結果を返します

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)である行が1つ必要です。どうすればこれを達成できますか?

EDIT

テーブルはそうのように構成されています

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? –