Другие языки программирования и технологии

Операции в запросе mysql

Здравствуйте дорогие пользователи интернета. Помогите мне пожалуйста разобраться с одной проблемой.
Есть таблица в базе, пожертвования сайту. Выглядит она вот так:

id, u_id, user, sum, adtime.

Как можно выявить того пользователя который сделал больше всех пожертвовании и на какую сумму при условии что в таблице несколько строк с его именем? К примеру:

id, u_id, user, sum, adtime

1, 142, vova, 150, 1408110615

2, 142, vova, 300, 1408110615

3, 142 viva, 11, 1408110615

4, kolea, 140, 1408110615

5, kolea, 300, 1408110615.

В этом случае, Вова сделал пожертвовании на большую сумму. Но как это узнать в sql запросе? Заранее благодарен!
Правильно сделали. Вот еще один вариант до кучи/для наглядности, но это дело вкуса:

SELECT user, MAX(TotalUserSum) FROM
(
SELECT user as user, SUM(sum) as TotalUserSum FROM table GROUP BY user
)

PS: GROP BY USER в самом конце забыл, сорри.
Константин
Константин
19 662
Лучший ответ
Владимир Бодров Ему МАКСИМАЛЬНУЮ сумму надо!
SELECT user, SUM(sum) FROM table GROUP BY user HEAVING SUM(sum) = MAX(SUM(sum))
Гуглим по запросу "sql sum"
Не особо разбираюсь в SQL, поэтому напишу алгоритм, как это можно решить с помощью PHP и простейших SQL запросов.
Логика такая: Создаешь цикл, допустим for, крутиться он будет mysql_num_rows() раз. В первой прокрутке береться пользователь с id = 1 во второй 2 и тд и эти цифры нужно пихнуть в переменную, допустим $current_id, но в принцепе оно уже имеется в переменной самого цикла for(если использовать такой цикл) . . Создашь внутри этого цикла ещё один цикл, такой же самый и в нем с помощью SELECT user WHERE id = $current_id выбирашь текущего юзера, делаешь все время допустим $tratata = mysq_fetch_array() (думал писать только алгоритм, а получается уже урок какой-то :) ну ладно) ну и дальше $vse_4to_vlozhil_user[$current_id] = $vse_4to_vlozhil_user[$current_id] + $tratata[sum]. В итоге получишь массив $vse_4to_vlozhil_user[] с данными общего взноса отдельных юзеров, где адрес юзера в масиве равен айди в таблице бд. думаю, что алгоритм простой. если что не понятно - спрашивай в коменте.

напутал немного (( внизу правильно будет

PS Выглядеть будет примерно так:
....
//подключение к бд, выбор таблицы
....
// Обнуляем, на всякий пожарный, массив
$i = int($i) = 0;
while($vse_4to_vlozhil_user[$i])
$vse_4to_vlozhil_user[] = 0;
$i++;

$size = mysql_num_rows(таблица) ;

// А вот и главный алгоритм
for($i=0;$i<size; $i++)
{

$blabla = mysql_query(" SELECT таблица WHERE $id='$i' ");
$kaka= mysq_fetch_array($blabla);

for($j=0;$j<size; $j++)
{

$blabla = mysql_query(" SELECT таблица WHERE user='$kaka[user]' AND id='$j' ");
$tratata = mysq_fetch_array($blabla);

$vse_4to_vlozhil_user[$current_id] = $vse_4to_vlozhil_user[$current_id] + $tratata[sum];
}
}