[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помоги с логикой php + sql
jpvis
Привет,

Я любитель в этом деле, но столкнулся с задачей которая мне совсем не под силу, может тут кто поможет. Я не прошу мне писать, просто может кто подкинет идей как это можно осуществить, логику подсказать... А код я как-нибуть сам smile.gif

Задача такова.

Допустим таблица с полем calldate
2011-05-30 08:01:00 - это начало звонка и есть поле
duration 60 секунд - это длительность звонка
следовательно звонок шел с 08:01:00 до 08:02:00

И есть другой звонок

calldate 2011-05-30 08:01:30 duration 50

Следовательно эти звонки идут какое-то время одновременно, занимая два канала

Задача в том, что бы найти вот такие вот пересекания и вывести результать в форме
время и количество пересеканий каналов.

Я так понимаю одним sql запросом это едва ли выдернешь поэтому надеюсь написал в нужный раздел.
Renden
jpvis
может я несовсем понял, но что мешает каждый "звонок" заносить в новую ячейку а потом сделать выборку по времени, и если результат > 1 значит есть пересекание в это время.
jpvis
я не совсем понял тебя ? Что значит заносить в новую ячейку ?
Renden
jpvis
ну у тя каждый звонок в базе это новая ячейка?
типа:
id 1 calldate 2011-05-30 08:01:30 duration 50
id 2 calldate 2011-05-30 08:13:30 duration 30
id 3 calldate 2011-05-30 08:12:30 duration 90
и тп?
Ну так сделай запрос по времени от и до, он выведет же все результаты которые попадают в этот промежуток.. т.е все звонки которые были в этот период времени, а насчет вычисления пересечений надо подумать...
jpvis
Вот я о том, же вывод количества звонков за определенный промежуток времени с построением графика я уже написал все красиво работает

Но вот надо найти эти пересечения, что бы вывести граффик загруженности каналов, т.е максимальное количество одновременных каналов.... Но в голову решение не лезет
Renden
jpvis
Чесно говоря ниче в голову умнее не приходит чем:
сделать заместо duration в секундах, поле call_end со временем окончания звонка (т.е время звонка мы получим если из call_end вычесть calldate (рекомендую переименовать в call_begin))
Далее, для вывода таблицы тебе всеравно придется найти то отчего отталкиваться, например от определенного времени допустим ты хочешь узнать какая была загруженость 2011-05-30 08:00 до 2011-05-30 08:10 сколько было звонков, тогда запрос такой:

SELECT count(*) FROM calls WHERE call_begin >= '2011-05-30 08:00' AND call_end <= '2011-05-30 08:10'

должно вывести колличество звонков которые попадают в этот период, следовательно у них всяко было пересечение.
Наверно так можно допустим раз в 10 мин делать запрос и сохранять в отдельную таблицу результат того сколько звонков было, и уже основываясь на этой таблице строить граффик, с шагом в 10 минут. Как подругому я хз, удачи.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.