[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: sum
freaky
Здравствуйте!
Подскажите как построить такой запрос, не могу найти решение.

В таблице есть :
20 записей,
1 поле (int) поле которое нужно посчитать, т.е. сумму,
но не просто посчитать, сложить только 10 наибольших значений

что-то например


SELECT SUM (`pole`) FROM `table` Where


а дальше не знаю.
IT_developer
SELECT SUM (`pole`) FROM `table` LIMIT 10 ORDER BY  `pole`

Если будет выводить наоборот самые маленькие добавь в конец моего запроса DESC
freaky
Цитата (IT_developer @ 2.01.2013 - 09:46)
SELECT SUM (`pole`) FROM `table` LIMIT 10 ORDER BY  `pole`

Если будет выводить наоборот самые маленькие добавь в конец моего запроса DESC

я делаю


$res = mysql_query("SELECT SUM(pole) FROM table WHERE id='$id' LIMIT 10 ORDER BY `pole`");
$mas = mysql_result($res, 0);


echo $mas;



выдаёт

Warning: mysql_result() expects parameter 1 to be resource, boolean given in

может что-то здесь не так
kaww
IT_developer, этот запрос будет работать не правильно, т.к. сначала будет выполнена группировка всех записей а уже затем limit
Пришло на ум только это
SELECT SUM (`pole`) FROM `table` Where pole >= (select pole from table order by  pole desc limit 9,1)
, но по-моему это хреновый вариант.
kaww
Цитата
выдаёт

Warning: mysql_result() expects parameter 1 to be resource, boolean given in

может что-то здесь не так

у вас в запросе ошибки IMIT -> LIMIT и сначала order by затем limit, но это не важно т.к. запрос задачу не решит
freaky
я попробовал поменять местами limit и order by
ошибку не выдал
всё посчитал, но в том то и дело что всё, а не необходимые 10
IT_developer
kaww
Действительно ошибся
НУ а если лимит с сортировкой местами поменять, с начало от сортируются по большинству, а потом вытащить самые большие 10 цифр, точнее их сумма
$res = mysql_query("SELECT SUM(`pole`) FROM `table` WHERE `id`='".$id."' ORDER BY `pole` LIMIT 10"); 
echo $res;
freaky
Цитата (kaww @ 2.01.2013 - 10:06)
Цитата
выдаёт

Warning: mysql_result() expects parameter 1 to be resource, boolean given in

может что-то здесь не так

у вас в запросе ошибки IMIT -> LIMIT и сначала order by затем limit, но это не важно т.к. запрос задачу не решит

ошибку это я вижу, это ерунда
freaky
Цитата (IT_developer @ 2.01.2013 - 10:11)
kaww
Действительно ошибся
НУ а если лимит с сортировкой местами поменять, с начало от сортируются по большинству, а потом вытащить самые большие 10 цифр, точнее их сумма
$res = mysql_query("SELECT SUM(`pole`) FROM `table` WHERE `id`='".$id."' ORDER BY `pole` LIMIT 10"); 
echo $res;

если делать без


$mas = mysql_result($res, 0);


то пишет Resource id #52

если с , то считает всё а не 10
kaww
Цитата
Действительно ошибся
НУ а если лимит с сортировкой местами поменять, с начало от сортируются по большинству, а потом вытащить самые большие 10 цифр, точнее их сумма
$res = mysql_query("SELECT SUM(`pole`) FROM `table` WHERE `id`='".$id."' ORDER BY `pole` LIMIT 10");
echo $res;

в этом запросе сначала выполнится группировка затем сортировка и только потом лимит, и получим сумму всех записей в таблице
freaky
Цитата (kaww @ 2.01.2013 - 10:17)
Цитата
Действительно ошибся
НУ а если лимит с сортировкой местами поменять, с начало от сортируются по большинству, а потом вытащить самые большие 10 цифр, точнее их сумма
$res = mysql_query("SELECT SUM(`pole`) FROM `table` WHERE `id`='".$id."' ORDER BY `pole` LIMIT 10");
echo $res;

в этом запросе сначала выполнится группировка затем сортировка и только потом лимит, и получим сумму всех записей в таблице

так нужно сумма не всех, а 10-ти наибольших
kaww
freaky, попробуйте запрос из моего первого сообщения
freaky
походу нужен group by
freaky
Цитата (kaww @ 2.01.2013 - 10:20)
freaky, попробуйте запрос из моего первого сообщения

сразу попробовал и отписался
freaky
да, походу действительно вместо order by нужен group by ...

теперь считает правильно

просто теперь другая проблема, но это уже совсем страшная история о типах полей и их сортировки как чисел после 100... laugh.gif

всем спасибо!!!))))



Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.