Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2011, 15:20   #1
andrew_jr20
Пользователь
 
Регистрация: 01.06.2011
Сообщений: 53
По умолчанию диапазоны дат - смены

Добрый день
Имеется ещё одна задача, по которой мне бы хотелось получить подсказку, или алгоритм составления запроса.
Есть таблица статусов продавцов, в которой кладутся ID продавцов, время изменения статуса, и собственно сами статусы - выход на смену и уход со смены. Выходы плавающие, то есть нет никакой определённости - в понедельник один продавец может выйти в 9 утра, закрыться в час дня, второй - с 10 до 19, во вторник же - первый продавец с часу дня до 9 вечера, второй - с 11 вечера до 9 утра.
Имеется таблица с действиями продавцов - обслуживание клиента, где меня интересует только опять-таки ID продавца и дата действия, или обработанной заявки.
Так вот, сама задача состоит в том, чтобы получить для конкретного продавца все его смены (дата выхода - дата закрытия), и количество выполненых заявок за каждый полученный период. Как меньшей кровью добиться этого? Можно ли сделать это только средствами СУБД (MySQL в моём случае), либо ещё на клиенте нужны будут действия?
Заранее спасибо
andrew_jr20 вне форума Ответить с цитированием
Старый 16.12.2011, 15:28   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если время начала смены и конца смены в одной записи таблицы статусов, то можно одним простым запросом все решить. Если же разнесены по разным записям, то прийдется сильно постараться
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.12.2011, 15:38   #3
andrew_jr20
Пользователь
 
Регистрация: 01.06.2011
Сообщений: 53
По умолчанию

В том-то и дело, что в разных записях, стоит дата и ид статуса - грубо говоря, 1 - выход на смену, 2 - закрытие. Была уже мысль сначала формировать временную таблицу с 3 столбцами - ид смены, начало, конец, и уже с ней связывать - вопрос тогда, каким именно простым запросом можно это сделать? Такую временную таблицу я создам, воспользуюсь хранимками.
andrew_jr20 вне форума Ответить с цитированием
Старый 16.12.2011, 15:46   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
SELECT T1.ID,T1.DateFrom,T1.DateTo,COUNT(*) AS CountOper
  FROM Tablica1 T1,Tablica2 T2
  WHERE T1.ID=5 AND T1.ID=T2.ID AND T2.DatOper BETWEEN T1.DateFrom AND T1.DateTo
  GROUP BY T1.ID,T1.DateFrom,T1.DateTo
Выход в смену без регистрации конца смены здесь не учтен
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.12.2011, 15:49   #5
andrew_jr20
Пользователь
 
Регистрация: 01.06.2011
Сообщений: 53
По умолчанию

Конец открытой смены можно в процедуре забивать текущей датой, не проблема - сейчас попробую реализовать, спасибо ещё раз, на первый взгляд действительно просто
andrew_jr20 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ограничения или диапазоны hasana Общие вопросы C/C++ 2 13.01.2011 19:49
Динамические диапазоны LaryMusa Microsoft Office Excel 8 05.07.2010 21:20
Как просуммировать диапазоны? Алексей11111 Microsoft Office Excel 7 28.11.2009 18:19
Где найти диапазоны типов? TwiX Общие вопросы C/C++ 3 21.11.2009 20:48
Суммесли и диапазоны на листах _ДЭН_78 Microsoft Office Excel 1 18.09.2007 15:38