2012-03-21 1 views
0

ねえすべてのあなたがそこ合計した個々の行、MYSQL columを合計し、

私が使用することを許可されているグループのデータメンバーの量を合計するクエリを記述しようとしています

、また、中を選択その同じクエリは、個々のメンバが使用できるデータ量を選択します。

これは瞬間

SELECT (groups.extra_space + DataPlan.total_disk_space_limit) AS total_space, 
    SUM(User.disk_space_limit) AS total_allocated, 
    User.id, User.first_name, 
    User.last_name, 
    User.disk_space_limit 
FROM groups INNER JOIN users AS User ON (groups.id = User.group_id) 
INNER JOIN data_plans AS DataPlan ON (groups.data_plan_id = DataPlan.id 
AND User.group_id = Group_id) WHERE groups.id = 24; 

これは返すデータセットでの私のクエリでは、次のとおりです。

+-------------+-----------------+----+------------+-----------+------------------+ 
| total_space | total_allocated | id | first_name | last_name | disk_space_limit | 
+-------------+-----------------+----+------------+-----------+------------------+ 
|   300 |    82 | 22 | Big  | Bird  |    0 | 
+-------------+-----------------+----+------------+-----------+------------------+ 

私はの線に沿ってより多くなるように設定データをたいと思います...

+-------------+-----------------+----+------------+-----------+------------------+ 
| total_space | total_allocated | id | first_name | last_name | disk_space_limit | 
+-------------+-----------------+----+------------+-----------+------------------+ 
|   300 |    82 | 22 | Big  | Bird  |    0 | 
|   300 |    82 | 23 | Cookie  | Monster |    11 | 
|   300 |    82 | 24 | Oscar  | Grouch |    32 | 
|   300 |    82 | 25 | Count  | Count  |    19 | 
|   300 |    82 | 26 | Snuffel | Ufogus |    20 | 
+-------------+-----------------+----+------------+-----------+------------------+ 

これは2つのクエリで簡単に行うことができますが、私は本当に1つの方法でそれを行う方法を学びたいと思います。

ご協力いただければ幸いです。

ありがとうございます!

答えて

1

多分ちょうどあなたの現在のクエリ

編集の末にgroup by User.id句を追加します。それはすべてを返します....

SELECT (groups.extra_space + DataPlan.total_disk_space_limit) AS total_space, 
    (select SUM(users.disk_space_limit) from users WHERE users.group_id = groups.id) AS total_allocated, 
    User.id, User.first_name, 
    User.last_name, 
    User.disk_space_limit 
FROM groups INNER JOIN users AS User ON (groups.id = User.group_id) 
INNER JOIN data_plans AS DataPlan ON (groups.data_plan_id = DataPlan.id 
AND User.group_id = Group_id) WHERE groups.id = 24; 
+0

中途半端そこに取得します。ここではサブクエリを持つ例ですユーザーはtotal_allocatedが返された各行のdisk_space_limitと同じです – letsgettechnical

+0

total_allocatedはすべてのユーザー用ですか? – Gohn67

+0

はい、total_allocatedは、すべてのユーザーdisk_space_limitの合計である必要があります。だから、この場合82 – letsgettechnical