Задать вопрос
  • Как сравнить по времени в таблицах, отбросив минуты и секунды до часов?

    @alexalexes
    Select t1.ID, t1.TIME
    from 
    TABLE_1 t1 
    JOIN TABLE_2 t2 ON t1.ID=t2.ID
                  and to_char(t1.TIME, 'DD.MM.YYYY HH24') = to_char(t2.TIME, 'DD.MM.YYYY HH24')

    Вариант 2 (возможно, пригодится при оптимизации, так как на выходе сравниваются значения в типе дата время, а не строк):
    ... and trunc(t1.TIME, 'hh24') = trunc(t2.TIME, 'hh24')

    PS: Хорошо бы еще индекс создать под этот формат времени для колонок t1.TIME и t2.TIME, тогда запрос будет всегда производителен.
    Ответ написан
    4 комментария
  • Наработает цикл for в цикле while что делать?

    @negr_vitalya
    Я скелет - негр виталя
    Что-бы содержимое sql-запроса выводилось нужно итерировать вызов функции cursor.fetchall() или cursor.fetchone() после выборки из бд. А так cursor.execute ничего не возвращает и итерировать там нечего, поэтому в консоль выводится только "не работает".
    Ответ написан
    1 комментарий
  • На чем сейчас делают сайты с простым редактированием?

    Варианты:
    1) Любой онлайн конструктор сайтов подойдет.
    Плюсы - красивые блоки, простая админка, техподдержка.
    Но доступа к кодам не будет конечно + абонплата.

    2) Wordpress + редактор блоков типа Elementor (их много разных).
    Плюсы - универсальность, нет абонплаты, неограниченные возможности развития.
    Но многие блоки изначально некрасивые, надо ковырять самому, нет техподдержки.

    Мне лично wordpress больше нравится, особенно в качестве сайта компании.
    Все же онлайн конструкторы - это для быстрых и простых лендосов.
    Ответ написан
    Комментировать
  • Как обеспечить консистентность данных между БД и поисковым движком?

    В программировании есть только две проблемы - именование переменных и инвалидация кэша.


    Ну тут несколько вариантов:
    1. Пытаться одновременно записать в обе базы.
    2. Сначала писать в Postgres, как в единственный источник истины, а параллельно копировать в эластик (по расписанию или ещё как)
    3. Писать в какую-нибудь брокер сообщений типа кафки, а в Postgres и ES записывать из него.

    По соотношению сложность/надёжность второй вариант лучше всего
    Если нужно, чтобы в Pg и ES данные попадали гарантированно и при этом как можно быстрее - вариант с брокером сообщений.
    Если нужна максимальная скорость и минимальные гарантии - первый вариант.
    Ответ написан
    Комментировать
  • Почему возникает ошибка Promise { pending }?

    MvcBox
    @MvcBox
    Software Engineer [C/C++/JS(for Node.js)/etc]
    'use strict';
    const { MongoClient } = require('mongodb');
    const client = new MongoClient('mongodb://localhost:27017/');
    
    (async function() {
      await client.connect();
      const result = await client.db('world').collection('cyti').find().toArray();
      console.log('City:',  result);
    })().catch(console.error);


    https://developer.mozilla.org/en-US/docs/Web/JavaS...
    https://learn.javascript.ru/async-await
    Ответ написан
    Комментировать
  • Как лучше реализовать постоянный отсчёт времени и суммирование значений?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Надо ли иметь в БД статичное значение баллов? Может, оставить свойство вычисляемым — когда требуется узнать про конкретного пользователя, сколько у него баллов — выполняется поиск купленных им карточек за последние 10 дней и до сих пор активных, и суммируются.

    Либо можно обновлять базу cron-задачей. Округлить до какого-то интервала времени: 1 сутки (если все в одном городе), или 1 час, если пользователи со всех частей света. Карта начинает действовать в ближайший следующий «момент» после активации. В ближайшую полночь, скажем.

    1000 пользователей по 5 карточек — это не нагрузка, всё легко отработает.
    Ответ написан
    1 комментарий
  • Почему нулевая дата выводится некорректно?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Потому что нулевой месяц - это на один месяц раньше первого месяца, и нулевой день тоже на один день раньше первого дня. Вот и получается:
    0000-01-01 00:00:00 минус 1 месяц = -0001-12-01 00:00:00
    -0001-12-01 00:00:00 минус 1 день = -0001-11-30 00:00:00
    Ответ написан
    Комментировать
  • Как использовать Excel на сервере для расчетов заданных пользователем данных?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Самый оптимальный вариант в вашем случае: Используйте гугл таблицы/эксель для мобильного. Ничего программировать не нужно, все из коробки, как говорится.
    Вариант затратный по времени, но менее затратный по деньгам: Изучаете html+css+какой-нибудь язык программирования (какой именно - не принципиально, сейчас большинство ЯП`ов можно использовать для бекэнда и, пожалуй для каждого такого есть библиотека для работы с экселевскими файлами), после чего пишите простенькую системку и размещаете на дешевом хостинге.
    Вариант "вот-прям-щаз за кучу денег": Арендуете выделенный сервер на Windows и запускаете excel там.
    Ответ написан
    9 комментариев
  • Как извлечь данные из строки?

    iMedved2009
    @iMedved2009
    Не люблю людей
    <?php
    $array = [];
    parse_str(parse_url('https://vk.com/video_ext.php?oid=-18797028&id=456244832&hash=789b9a6bfce03cc9', PHP_URL_QUERY), $array);
    
    var_dump($array);
    Ответ написан
    1 комментарий
  • Какой БД выбрать для ERP-систему, SQL или NoSQL?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    для ERP ВСЕГДА SQL
    конечно, с грамотным же кодом приложения
    там ценна не скорость а консистентность, в nosql этого нет от слова совсем

    получишь 0,1 зарплаты а по бумагам пройдет как 1,5-2 - т.е. даже с премией

    другое дело что какие-то части а-ля отрисовка и фронтенд можно и поиграться в скорость, опять же - лучше отдельная Постгре с JSON если так уж рука тянется
    Ответ написан
    2 комментария
  • Какой БД выбрать для ERP-систему, SQL или NoSQL?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Про что ERP системы? Они - про управление ресурсами предприятия. Нужно ли вам в процессе управления осуществлять поиски и соединения по разным сущностям? Скорее всего - да. 99% что да.

    NoSQL системы принципиально не поддерживают JOINS. Они разрабатывались для других моделей где отклик важен а JOIN не нужен. NoSQL системы не умеют делать эффективное индексирование не-ключевых полей. Фактически если вы хотите индекс - вам производитель NoSQL нагло предложит просто создать реплику всей коллекции данных только сделав искомые поля ключевыми. Как поддержать реплику и сколько ресурсов это будет стоить - отдельный вопрос. Возможно в некотором гипотетическом сценарии поддержка хорошо индексированной NOSQL системы будет стоить дороже чем реляционной.

    Вот и думайте. NoSQL в ERP - это авантюра.

    Если вам критично в какой-то части время вставки - подумайте про CQRS или создание очередей в некоторых наиболее горячих точках системы. Должен быть компромисс. Невозможно построить везде быструю систему.
    Ответ написан
    Комментировать
  • Почему в ВК не используют JOIN?

    mayton2019
    @mayton2019
    Bigdata Engineer
    JOIN - не плохой.

    В эпоху соц-сетей (facebook e.t.c.) придумали подготавливать веб-контент на сервере для каждого пользователя персонально. Ваша лента новостей. Ваш landing. Статистика. Все это хранится в какой нибудь RocksDb (на самом деле я не знаю в какой просто для примера взял) и извлекается просто по ключу. Обновляются эти документы по событиям. Тоесть мессенджинг системы тоже нужны. LinkedIn был настолько озабочен этим вопросом что создал Kafka решая задачи своей соц-сети.

    Все эти хитрости сделаны только для того чтобы убрать реляционные БД из стека веб-технологий и сделать отрисовку landing как можно более быстрой. И этой быстроты невозможно было-бы достичь если-бы делать select всех новостей где подписчик == вы и где еще и все 100500 новостей order by... короче поняли. Ну и join тоже убрать. В любой умной БД есть звезда или снежинка и отрисовать на экране звезду и снежинку без join невозможно. Вобщем join здесь не причем. А важно что - убрали стек одинаковых повторяющихся операций поиска-соединения-фильтрации-сортировки и заменили на извлечение документа из документной БД.
    Ответ написан
    Комментировать
  • Как эффективно выполнить массовую вставку(импорт из excel) в postgres?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    С десятками тысяч записей легко справится и COPY FROM из csv. Размер таблицы при инсертах на скорость вставки особо не влияет - это же не update.
    Ответ написан
    Комментировать
  • Как проверить дату в дипазанох дат?

    iMedved2009
    @iMedved2009
    Не люблю людей
    select not exists( select 1 from test where "2022-01-03 09:00:00" between date_start and date_end);


    Так?
    Ответ написан
    Комментировать
  • Как оптимизировать INSERT запросы в PDO(phpmyadmin)?

    SagePtr
    @SagePtr
    Еда - это святое
    А зачем в цикле каждый раз заново создавать подготовленное выражение? Можно вне цикла его создать один раз, забиндовать параметр, а в цикле только каждый раз его подставлять и выполнять execute.
    Ответ написан
    Комментировать
  • Какие есть api, для получения информации с какими странами граничит страна, которую выбрал пользователь?

    EreminD
    @EreminD
    Кое-что умею
    https://restcountries.com/#api-endpoints-v2-all

    Пример
    https://restcountries.com/v2/name/andorra

    [{
        "name": "Andorra",
        "topLevelDomain": [".ad"],
        "alpha2Code": "AD",
        "alpha3Code": "AND",
        "callingCodes": ["376"],
    ...
        "borders": ["FRA", "ESP"], // коды стран
        "nativeName": "Andorra",
    ...
    }]
    Ответ написан
    6 комментариев
  • Как добавить данные в те же ключи массива?

    0xD34F
    @0xD34F
    $grouped = array_map(function($n) {
      for ($i = 1; $i < count($n); $i++) {
        $min = min($n[$i]);
        $max = max($n[$i]);
        $n[$i] = ($min === $max) ? $min : "$min-$max";
      }
      return $n;
    }, array_values(array_reduce($arr, function($acc, $n) {
      $acc[$n[0]] ??= [ $n[0] ];
      for ($i = 1; $i < count($n); $i++) {
        $acc[$n[0]][$i][] = $n[$i];
      }
      return $acc;
    }, [])));
    Ответ написан
    1 комментарий
  • Математические операции в значении столбца бд MySQL по умолчанию?

    iMedved2009
    @iMedved2009
    Не люблю людей
    Ответ написан
    Комментировать
  • Как отменить загрузку документа на PHP?

    KKOOLL
    @KKOOLL
    full stack-developer
    Да, можно сделать перенаправление ещё на другой файл с ошибкой например, либо сюда написать html для вывода ошибки и тд.
    Ответ написан
    Комментировать
  • Как вытащить первую строку из поля и сразу же ее удалить?

    SagePtr
    @SagePtr
    Еда - это святое
    https://dev.mysql.com/doc/refman/8.0/en/innodb-loc...
    1. Начать транзакцию.
    2. Выбрать ключ запросом SELECT ... LIMIT 1 FOR UPDATE SKIP LOCKED
    3. Удалить эту строку либо пометить ключ использованным.
    4. Применить транзакцию.
    В этом случае ключ не попадёт дважды, так как строка при выборке заблочится и больше не попадёт никому другому, пока транзакция не завершится.
    Движок таблицы должен быть InnoDB, т.к. только он в MySQL умеет блокировать построчно. Если всё же нужно работать с MyISAM - то тогда на первом шаге блокировать всю таблицу через LOCK TABLES, на последнем - разблокировать, но в таком случае одновременно только один экземпляр скрипта сможет пользоваться таблицей, другие будут ждать в очереди. Либо самописные оптимистические блокировки использовать.
    Ответ написан
    2 комментария