• Как подсчитать количество врачей, работающих в неделю?

    @gelirgwenn Автор вопроса
    Boris Korobkov, благодарствую, конечно, но
    Вариант 1 жесткий до безобразия, обалдеть делать столько запросов, если период поиска до полугода. Любой сервер захлебнется.
    Вариант 2 тоже жесткий, вы представьте, сколько диапазонов может быть за полгода? Чтобы предусмотреть все диапазоны - это надо написать целый генератор. Условие "хотя бы один" мне не подходит, мне надо знать точно, сколько парней работают.
    Я реализую свое решение, при добавлении каждого отпуска буду высчитывать день последнего выходного для сотрудника и рассчитывать интервалы работы, их может быть от 1 до двух при каждом добавлении, записывать сие дело в таблицу рабочих дней, я потом написать скрипт поиска оптимальных диапазонов, когда нужное кол-во врачей работает - не составит труда. Это легче и менее ресурсоемко, чем генерировать все возможные интервалы за полгода и сравнивать с ними. Протестирую, проверю, может я и не прав. Только практика. Я вот ваше выпячивание ЧСВ мне совсем не понравилось. За меня никто вас ничего не просил делать. Мне нужен был совет, вы дали свои, я решил пойти по своему пути, возможно вернусь к вашим вариантам. Но, в любом случае, здесь не фриланс, во всяком случае, я ничего такого не просил.
  • Как подсчитать количество врачей, работающих в неделю?

    @gelirgwenn Автор вопроса
    Boris Korobkov, Тут вот какая штука: на дворе январь и хирурги все в отпусках, до 17.02, к примеру. Пользователь запросил врачей на 18 января, по результатам поиска - пусто, все отдыхают. Странно, что все пошли в отпуск, но все-таки, это для примера. Мне нужно выдать пользователю, что ближайший день работы этих лентяев - 18.02, и работать их будет 2 штуки, к примеру. Исходя из этого я решил вытащить из графика отпусков все записи, начиная от сегодняшней даты до +3 месяца. Это я получил интервалы выходных. Я могу преобразовать их в интервалы рабочих дней, соединив конец интервала X с началом интервала Y и сформировать массив:
    $results = array(
              0                  => array("start"=> 1455652222, "end"=>18885661),
              .......
    )

    А затем нужно пройти массив, если интервал входит в другой интервал, то докторов уже два работает на этом интервале. Скрипт получается довольно сложный. И из базы надо тянуть кучу записей и проходить по всем несколько раз. Это меня и смущает, больше ничего не смог придумать. Вы это имели ввиду?
  • Как подсчитать количество врачей, работающих в неделю?

    @gelirgwenn Автор вопроса
    Согласен с вами, как и с комментатором выше, спасибо за то, что нашли ошибку. Но вопрос в другом, если вспомнили статьи со схожей задачей (подсчет сотрудников не по заданному интервалу, а возможные интервалы, когда они свободны за полгода, скажем), буду благодарен за ссылочку.
  • Как подсчитать количество врачей, работающих в неделю?

    @gelirgwenn Автор вопроса
    Согласен, вы правы, я в попыхах неправильно составил условие, поскольку я использую здесь оператор NOT EXISTS, то мне следует искать пересечение, т.е. условие holidays.start_date < inputInterval.end_date AND holidays.end_date > inputInterval.start_date. Или, оставить условие прежним, но использовать скобки и оператор JOIN. Но вопрос тут не о том, хотя спасибо за то, что нашли ошибку в запросе.
  • Как получить данные через socket.io по HTTPS?

    @gelirgwenn Автор вопроса
    DoumanAsh: дело в том, что это сторонний сервис (который предоставляет мне данные по сокетам), на который не могу повлиять, чтобы он работал по HTTPS.
    Понял, про какой прокси вы имели ввиду. Да, тут все очевидно.
    Решил сменить сервис, с которого получаю данные на платный, меньше проблем.
    Спасибо за советы
  • Как получить данные через socket.io по HTTPS?

    @gelirgwenn Автор вопроса
    Добрый человек, может, подскажите ссылкой, где почитать про второй пункт: создание прокси
  • Как получить данные через socket.io по HTTPS?

    @gelirgwenn Автор вопроса
    Ростислав Игнатенко: Пробовал такое, выдает в консоли:
    Failed to load resource: net::ERR_CONNECTION_REFUSED on https://socket.coincap.io/socket.io/?EIO=3&transpo...

    Решил, что данная ошибка свидетельствует о том, что сервис по HTTPS не доступен. Спасибо за совет.