Здравствуйте!
Подскажите как построить такой запрос, не могу найти решение.
В таблице есть :
20 записей,
1 поле (int) поле которое нужно посчитать, т.е. сумму,
но не просто посчитать, сложить только 10 наибольших значений
что-то например
SELECT SUM (`pole`) FROM `table` Where
а дальше не знаю.
IT_developer
2.01.2013 - 13:46
SELECT SUM (`pole`) FROM `table` LIMIT 10 ORDER BY `pole`
Если будет выводить наоборот самые маленькие добавь в конец моего запроса DESC
Цитата (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
может что-то здесь не так
IT_developer, этот запрос будет работать не правильно, т.к. сначала будет выполнена группировка всех записей а уже затем limit
Пришло на ум только это
SELECT SUM (`pole`) FROM `table` Where pole >= (select pole from table order by pole desc limit 9,1)
, но по-моему это хреновый вариант.
Цитата |
выдаёт
Warning: mysql_result() expects parameter 1 to be resource, boolean given in
может что-то здесь не так |
у вас в запросе ошибки IMIT -> LIMIT и сначала order by затем limit, но это не важно т.к. запрос задачу не решит
я попробовал поменять местами limit и order by
ошибку не выдал
всё посчитал, но в том то и дело что всё, а не необходимые 10
IT_developer
2.01.2013 - 14:11
kawwДействительно ошибся
НУ а если лимит с сортировкой местами поменять, с начало от сортируются по большинству, а потом вытащить самые большие 10 цифр, точнее их сумма
$res = mysql_query("SELECT SUM(`pole`) FROM `table` WHERE `id`='".$id."' ORDER BY `pole` LIMIT 10");
echo $res;
Цитата (kaww @ 2.01.2013 - 10:06) |
Цитата | выдаёт
Warning: mysql_result() expects parameter 1 to be resource, boolean given in
может что-то здесь не так |
у вас в запросе ошибки IMIT -> LIMIT и сначала order by затем limit, но это не важно т.к. запрос задачу не решит
|
ошибку это я вижу, это ерунда
Цитата (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
Цитата |
Действительно ошибся НУ а если лимит с сортировкой местами поменять, с начало от сортируются по большинству, а потом вытащить самые большие 10 цифр, точнее их сумма $res = mysql_query("SELECT SUM(`pole`) FROM `table` WHERE `id`='".$id."' ORDER BY `pole` LIMIT 10"); echo $res; |
в этом запросе сначала выполнится группировка затем сортировка и только потом лимит, и получим сумму всех записей в таблице
Цитата (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-ти наибольших
freaky, попробуйте запрос из моего первого сообщения
Цитата (kaww @ 2.01.2013 - 10:20) |
freaky, попробуйте запрос из моего первого сообщения |
сразу попробовал и отписался
да, походу действительно вместо order by нужен group by ...
теперь считает правильно
просто теперь другая проблема, но это уже совсем страшная история о типах полей и их сортировки как чисел после 100...
всем спасибо!!!))))
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.