Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Кто сегодня провел больше всего времени в лаборатории за раз?
 
 автор: __гость__   (16.10.2008 в 15:28)
 
 

name | date | time_in_lab
------------------------------------
Dima | 2008-10-16 | 8
Dima | 2008-10-16 | 9
Alex | 2008-10-16 | 10
Alex | 2008-10-16 | 5
Dima | 2008-10-16 | 6
Alex | 2008-10-13 | 7


Помогите выбрать того, кто сегодня провел больше всего времени в лаборатории за раз.
Тоесть 16го числа дима в общей сложности вошёл в лабораторнубю комнату 3 раза, на 8,9 и 6 минут.
Алекс же сегодня два раза, на 10 и 5 минут.

У Алекса сегодня максимум больше. ( 10 ) нужно именно его и выбрать

  Ответить  
 
 автор: __гость__   (16.10.2008 в 15:49)
 
   для: __гость__   (16.10.2008 в 15:28)
 

К слову мне нужна сначала сортировка, а потом группировка
а не так как происходит в запросе
SELECT * FROM `tbl` GROUP BY `name` ORDER BY `mininlab` DESC

  Ответить  
 
 автор: Trianon   (16.10.2008 в 16:14)   письмо автору
 
   для: __гость__   (16.10.2008 в 15:28)
 

SELECT r.name, r.time_in_lab 
  FROM tbl AS r
    WHERE 
      r.`date` = CURDATE() 
    AND 
        r.time_in_lab = 
          (SELECT MAX(time_in_lab) FROM tbl WHERE `date` = CURDATE())


ни сортировка, ни группировка тут не помогут.

  Ответить  
 
 автор: __гость__   (16.10.2008 в 16:22)
 
   для: Trianon   (16.10.2008 в 16:14)
 

Благодарю, но имеено так у меня сейчас реализовано.
Привиденный пример это упрощенная абстракция действительной таблицы,
где подключаются дополнительные таблицы, у примеру зарплата за минуту проведенную в лаборатории, которая имеется пока не у всех лоборантов, и выводится внизу страницы.
И выбирается совсем не один, человек, а первые 350


select name,miinlab FROM labs WHERE name in (select distinct name from labss where date=CURDATE() order by minninlab desc limit 350); 


Такой запрос очень ресурсоемок и в часы нагрузки сервер "не справляется".
Должна же быть возможность обойти этот запрос,
ведь при группировке и сортировке по разным полям, mysql создает веременную таблицу в любом случае. Как заставиьт mysql сортировать эту таблицу во время создания ?

  Ответить  
 
 автор: Trianon   (16.10.2008 в 16:30)   письмо автору
 
   для: __гость__   (16.10.2008 в 16:22)
 

по-моему
а) мой запрос совсем не похож на Ваш
б) реальная зачдача сильно отличается от поставленного в первом посте вопроса.
в) структура таблицы оставляет желать.

  Ответить  
 
 автор: __гость__   (16.10.2008 в 16:35)
 
   для: Trianon   (16.10.2008 в 16:30)
 

В любом случае спасибо.

а сформулировал не чётко. Нужно выбрать не одного который больше всего провёл времени а лаборатории, а 10 лаборантов, которые провели за раз большего всего времени в лаборатории сегодня.

  Ответить  
 
 автор: Trianon   (16.10.2008 в 16:45)   письмо автору
 
   для: __гость__   (16.10.2008 в 16:35)
 

Рейтинговые запросы на MySQL проблематично строить...
уровень php никак нельзя подключить?

  Ответить  
 
 автор: __гость__   (16.10.2008 в 16:51)
 
   для: Trianon   (16.10.2008 в 16:45)
 

Придётся видимо

  Ответить  
 
 автор: __гость__   (16.10.2008 в 16:38)
 
   для: Trianon   (16.10.2008 в 16:30)
 

И ещё буду рад увидеть лучшую структуру, с учетом того, что нужно меть записи о всех входах лаборантов в лабораторию, даже если это не самый продолжительный заход.

  Ответить  
 
 автор: Trianon   (16.10.2008 в 16:52)   письмо автору
 
   для: __гость__   (16.10.2008 в 16:38)
 

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

  Ответить  
 
 автор: __гость__   (16.10.2008 в 17:10)
 
   для: Trianon   (16.10.2008 в 16:52)
 

Спасибо за помощь.

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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования