SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 22.11.2011 16:54:21

Libertos
Участник
Зарегистрирован: 22.11.2011
Сообщений: 3

Как сделать выборку из таблицы

Есть таблица с полями:
Время, состояние, имя оператора

Во время изменения состояния добавляется запись в таблицу

Требуется рассчитать общее время, которое оператор находился в определенном состоянии за день.
состояний около 5-7, соответственно в поле Состояние содержит начало действия и его конец (т.е. это две строки в таблице)
пример

10-00 пошел курить        Миша
10-15 закончил курить    Миша
10-30 начал работать      Миша
11-00 пошел курить        Миша
12-15 закончил курить    Миша
16-00 закончил работать Миша

Нужно посчитать сколько времени сегодня Миша курил.

Неактивен

 

#2 22.11.2011 16:58:49

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2420

Re: Как сделать выборку из таблицы

При такой структуре таблицы проще сделать это на клиенте на процедурном языке. Ну или функцию написать, которая курсором пройдёт по таблице и все посчитает.

Если sql'ем хотите, то лучше добавить еще одно поле, в котором будет окончание времени перекура. То есть как-то так:

10-00 10-15 Курение Миша
10-15 11-00 Работа Миша


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 22.11.2011 17:10:15

Libertos
Участник
Зарегистрирован: 22.11.2011
Сообщений: 3

Re: Как сделать выборку из таблицы

Проблема в том, что этих состояний за день - где то 6, и в эти состояния переходит много раз. Т.е. само поле состояние имеет 12 вариантов.
Думаю, что тут цикл нужен.

Думаю, что в самом MySql такое не реализовать(

Отредактированно Libertos (22.11.2011 17:11:56)

Неактивен

 

#4 22.11.2011 17:18:38

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2420

Re: Как сделать выборку из таблицы

в mysql нет циклов. но напишите функцию, которая курсором пройдёт по Вашей таблице и посчитает что нужно.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 22.11.2011 17:32:28

Libertos
Участник
Зарегистрирован: 22.11.2011
Сообщений: 3

Re: Как сделать выборку из таблицы

Не получится процедуру вставить, особенность системы.

Неактивен

 

#6 22.11.2011 18:13:40

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2420

Re: Как сделать выборку из таблицы

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


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#7 22.11.2011 22:09:41

simple
Активист
Зарегистрирован: 25.11.2010
Сообщений: 168

Re: Как сделать выборку из таблицы

deadka написал:

в mysql нет циклов. но напишите функцию, которая курсором пройдёт по Вашей таблице и посчитает что нужно.

А как же WHILE DO?

Неактивен

 

#8 22.11.2011 23:06:44

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2420

Re: Как сделать выборку из таблицы

Ну да, do wihle - это можно использовать в хранимых процедурах или функциях

А я имел в виду, что в рамках sql-запроса нельзя цикл сделать. Может быть можно как-то через пользовательские переменные сделать, но не факт, что получится и очень не рекомендую.

В-общем, Libertos, если не можете изменить структуру таблицы и нет возможности написать хранимую процедуру/функцию, то вытаскивайте данные на клиент, и там уже smile...


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson