Здравствуйте дорогие пользователи интернета. Помогите мне пожалуйста разобраться с одной проблемой.
Есть таблица в базе, пожертвования сайту. Выглядит она вот так:
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 запросе? Заранее благодарен!
Другие языки программирования и технологии
Операции в запросе mysql
Правильно сделали. Вот еще один вариант до кучи/для наглядности, но это дело вкуса:
SELECT user, MAX(TotalUserSum) FROM
(
SELECT user as user, SUM(sum) as TotalUserSum FROM table GROUP BY user
)
PS: GROP BY USER в самом конце забыл, сорри.
SELECT user, MAX(TotalUserSum) FROM
(
SELECT user as user, SUM(sum) as TotalUserSum FROM table GROUP BY user
)
PS: GROP BY USER в самом конце забыл, сорри.
Владимир Бодров
Ему МАКСИМАЛЬНУЮ сумму надо!
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];
}
}
Логика такая: Создаешь цикл, допустим 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];
}
}
Похожие вопросы
- ТОРМОЗИТ MySQL запрос, что делать, как его можно переделать???
- MySql в чем плюсы? Почему не обойтись?
- подскажите пожалуйста!! ! запрос на MySQL.
- PHP и MySQL. Пишу вот такой код, как в книге написано, но не работает. В чем причина?
- Помогите с MySQL
- Подробная установка связки Apache 2.0 + Php 5.1.4 + Mysql Server 4.1.16 под Win32 платформу
- Возникает ошибка в php mySQL. Подскажите, плиз.
- Работа с# и MySql
- Люди, знающие SQL, помогите сделать запрос.
- Вопрос про MySQL. Собрался изучать MySQL к чему он прикручивается?