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
Форумы портала PHP.SU :: Версия для печати :: максимально значение в ячейке
Форумы портала PHP.SU » » Работа с СУБД » максимально значение в ячейке

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

1. biperch - 19 Октября, 2011 - 21:14:34 - перейти к сообщению
есть таблица

id name sum

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

сделать это двумя запросами могу но нужно одним, чувствую что это легко но чет туплю
2. DeepVarvar - 19 Октября, 2011 - 21:18:58 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT name,price FROM tbl GROUP BY price ORDER BY price LIMIT 0,5;

(Добавление)
DESC забыл Закатив глазки
3. biperch - 19 Октября, 2011 - 21:27:00 - перейти к сообщению
нет, нето, здесь цены не повторяются, а мне нужно что бы люди не повторялись, а цена была макс

кароче вывести для каждого человека его макс покупку
4. Champion - 19 Октября, 2011 - 21:30:19 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT name, max(sum) extr
  2. FROM tbl
  3. GROUP BY name
  4. ORDER BY max(sum) DESC
5. DeepVarvar - 19 Октября, 2011 - 21:36:15 - перейти к сообщению
biperch пишет:
нужно вывести по одному имени с максимальной суммой для него.
Не понял
Ну таки ладно проехали.. Теперь более понятно что нужно было Закатив глазки
6. biperch - 19 Октября, 2011 - 21:40:07 - перейти к сообщению
Champion
выводит по одному пользователю но не выводит мах сумму
как и раньше (((
(Добавление)
Champion пишет:
extr
я так понимаю опечатка ))
7. Champion - 19 Октября, 2011 - 21:42:18 - перейти к сообщению
biperch пишет:
но не выводит мах сумму
Да ладно? А какую выводит? Можно дамп таблицы(с описанием таблицы) из 3-4 строк, который продемонстрирует неточность?
(Добавление)
biperch пишет:
extr
я так понимаю опечатка ))
Почему?)
8. biperch - 19 Октября, 2011 - 22:07:02 - перейти к сообщению
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`

(Добавление)
может кто че скажет ?
9. armancho7777777 - 19 Октября, 2011 - 22:40:30 - перейти к сообщению
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.  
10. biperch - 20 Октября, 2011 - 20:33:55 - перейти к сообщению
Является ли этот запрос оптимальным, оптимизирован, если нет то как его оптимизировать
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 по умолчанию первичный индекс
11. armancho7777777 - 21 Октября, 2011 - 14:39:57 - перейти к сообщению
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 так же предполагается поиск, то конечно проиндексируйте.

 

Powered by ExBB FM 1.0 RC1