Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: максимально значение в ячейке

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
biperch
Отправлено: 19 Октября, 2011 - 21:14:34
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009  
Откуда: Днепропетровск


Помог: 8 раз(а)




есть таблица

id name sum

в таблице имя повторяется
нужно вывести по одному имени с максимальной суммой для него.
и сортонуть по максимальной сумме

сделать это двумя запросами могу но нужно одним, чувствую что это легко но чет туплю
 
 Top
DeepVarvar Супермодератор
Отправлено: 19 Октября, 2011 - 21:18:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT name,price FROM tbl GROUP BY price ORDER BY price LIMIT 0,5;

(Добавление)
DESC забыл Закатив глазки
 
 Top
biperch
Отправлено: 19 Октября, 2011 - 21:27:00
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009  
Откуда: Днепропетровск


Помог: 8 раз(а)




нет, нето, здесь цены не повторяются, а мне нужно что бы люди не повторялись, а цена была макс

кароче вывести для каждого человека его макс покупку
 
 Top
Champion Супермодератор
Отправлено: 19 Октября, 2011 - 21:30:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT name, max(sum) extr
  2. FROM tbl
  3. GROUP BY name
  4. ORDER BY max(sum) DESC
 
 Top
DeepVarvar Супермодератор
Отправлено: 19 Октября, 2011 - 21:36:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




biperch пишет:
нужно вывести по одному имени с максимальной суммой для него.
Не понял
Ну таки ладно проехали.. Теперь более понятно что нужно было Закатив глазки
 
 Top
biperch
Отправлено: 19 Октября, 2011 - 21:40:07
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009  
Откуда: Днепропетровск


Помог: 8 раз(а)




Champion
выводит по одному пользователю но не выводит мах сумму
как и раньше (((
(Добавление)
Champion пишет:
extr
я так понимаю опечатка ))
 
 Top
Champion Супермодератор
Отправлено: 19 Октября, 2011 - 21:42:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




biperch пишет:
но не выводит мах сумму
Да ладно? А какую выводит? Можно дамп таблицы(с описанием таблицы) из 3-4 строк, который продемонстрирует неточность?
(Добавление)
biperch пишет:
extr
я так понимаю опечатка ))
Почему?)
 
 Top
biperch
Отправлено: 19 Октября, 2011 - 22:07:02
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009  
Откуда: Днепропетровск


Помог: 8 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. id        name          address             ves             time       user_id
  4. 9       MimicryTower21  4.54.5          8 550 740       1319026000      1
  5. 5       Gekca           4.17.4          6 843 195 124   1319024999      2
  6. 6       Mirniy_ugol     2.170.4         188 127 640     1319025006      1
  7. 10      Gekca           4.17.4          135 769 793     1319036986      5
  8. 11      Gekca           4.17.4          135 769 793     1319036996      5
  9. 12      Gekca           4.17.4          4 497 948 762   1319042613      5
  10. 13      strelka         4.2.3           14 039 400      1319042783      1
  11. 14      Gekca           4.17.4          4 497 948 762   1319042930      1
  12. 15      Gekca           4.17.4          4 497 948 762   1319042933      5
  13. 16      Gekca           4.17.4          4 497 948 762   1319042988      5



чтобы не порождать кучу вопросов я в примере ранее время заменил на сумму, но это не имеет значения ))
(Добавление)
во общем получилось вот так

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT f.*
  2. FROM (
  3.   SELECT `sota_address`, MAX(`time`) AS `max_date`
  4.   FROM `log_fors`
  5.   GROUP BY `sota_address`
  6.   ORDER BY NULL
  7. ) AS `d` INNER JOIN `log_fors` AS `f` ON d.`sota_address` = f.`sota_address` AND d.`max_date` = f.`time`
  8. ORDER BY f.`sota_address`

(Добавление)
может кто че скажет ?
 
 Top
armancho7777777 Супермодератор
Отправлено: 19 Октября, 2011 - 22:40:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




biperch пишет:
нужно вывести по одному имени с максимальной суммой для него.

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $res = mysql_query("SELECT name, max(sum) AS sum  
  4.                     FROM tbl
  5.                     GROUP BY name
  6.                     ORDER BY max(sum) DESC");  
  7.  
  8. while($row = mysql_fetch_assoc($res)){
  9. $row2[$row['name']] = $row['sum'];
  10. }
  11.  
  12. echo '<pre>';
  13. print_r($row2);
  14. echo '</pre>';
  15.  
  16.  

(Отредактировано автором: 19 Октября, 2011 - 22:44:35)

 
 Top
biperch
Отправлено: 20 Октября, 2011 - 20:33:55
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009  
Откуда: Днепропетровск


Помог: 8 раз(а)




Является ли этот запрос оптимальным, оптимизирован, если нет то как его оптимизировать
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT p.name,m.name FROM parts p INNER JOIN Manufacturers m ON
  2. p.man_id=m.id ORDER BY p.name DESC

на первый взгляд для более быстрого поиска я бы man_id проиндексировал, id по умолчанию первичный индекс
 
 Top
armancho7777777 Супермодератор
Отправлено: 21 Октября, 2011 - 14:39:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




biperch пишет:
Является ли этот запрос оптимальным, оптимизирован, если нет то как его оптимизировать
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT p.name,m.name FROM parts p INNER JOIN Manufacturers m ON
  2. p.man_id=m.id ORDER BY p.name DESC

на первый взгляд для более быстрого поиска я бы man_id проиндексировал, id по умолчанию первичный индекс

Если по man_id так же предполагается поиск, то конечно проиндексируйте.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB