2012-03-21 35 views
0

嘿,你在那裏的各行,MYSQL總和科拉姆並選擇進行了歸納

我嘗試寫總結一組數據成員的數量被允許使用的查詢,並在相同的查詢選擇單個成員允許使用的數據量。

這是我此刻的查詢

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

或許只需添加一個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 2012-03-21 21:35:12

+0

因此total_allocated是否適用於所有用戶? – Gohn67 2012-03-21 21:38:51

+0

是啊,total_allocated應該是所有用戶disk_space_limit的總和。所以在這種情況下82 – letsgettechnical 2012-03-21 21:41:15