• Как в PhpMyAdmin посмотреть историю изменения названия полей таблицы?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Никак, если вы сами её не сохраняли. MySQL таких логов не ведёт.
    Ответ написан
    2 комментария
  • Visual Basic или Python для Excel?

    altprtcl
    @altprtcl
    Python - разработчик
    Макросы, кнопки, формы?
    Только VBA. Насколько знаю, Microsoft на данный момент не предлагает никаких иных язык программирования для взаимодействия непосредственно в самом Excel

    Аналитика или обработка данных а - ля Data Science?
    Шагайте в сторону Python, тут есть куда расти, он намного понятнее и даёт больше контроля. Про огромное количество инструментов на все случаи жизни даже не зарекаюсь, чего только библиотеки pandas и numpy стоят?

    Вообще, всё зависит исключительно от того, какие цели вы себе ставите и для чего собираетесь использовать язык. Visual Basic - это конечно прошлый век, но некоторые до сих пор его используют, однако будущего у него очевидно нет, чего не скажешь о Python.

    Python - это язык с большим сообществом, начать свой путь в нём несложно, его сейчас даже в университетах учат на специальностях, которые казалось бы далеки от программирования, просто потому, что он великолепен для аналитики и обработки информации. В целом, лично я бы рекомендовал переходить на Python, но решать только вам
    Ответ написан
    1 комментарий
  • Как подставить значение в запрос sqlite?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Имена полей подставлять нельзя.
    Ответ написан
  • Как удалить запись в таблице MySQL по трём параметрам?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Чтобы правильно удалить запись в таблице по трём параметрам, надо указать все три параметра в условии WHERE
    DELETE FROM table_name WHERE col_1=val_1 AND col_2=val_2 AND col_3=val_3


    Не два, не пять, не десять, а ровно три параметра.
    Ответ написан
    Комментировать
  • Как проходит трафик в локальной сети через неуправляемые свитчи?

    vabka
    @vabka
    Токсичный шарпист
    Внутри сети данные будут идти только через свич.
    Если наружу - тогда уже пойдёт на роутер.
    Ответ написан
    Комментировать
  • Как управлять локализацией дат?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Даты в БД хранишь в формате UTC. Можно даже без таймзон. Главное, чтобы все представляли единый формат/точку отчета.

    На клиенты отправляешь эту дату. JS может создавать Date используя ISO формат - клиент эту дату парсит и используя свою временную зону парсит.

    В общем, смысл следующий:
    - В БД даты хранятся относительно UTC
    - На и с клиента даты отправляются в UTC формате - представление даты с учетом таймзоны будет на стороне пользователя/UI, а коде бизнес-логики работа ведется с UTC

    Клиент лучше знает, какая у него таймзона и локаль
    Ответ написан
    2 комментария
  • Как получить данные из строки mysqli?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Чтобы получить одну строку из результата запроса, в mysqli есть функции
    • fetch_assoc(): возвращает всю строку в ассоциативный массив
    • fetch_row(): возвращает нумерованный массив (список)
    • fetch_obj(): возвращает объект класса stdClass
    • fetch_column(): возвращает значение из первой колонки запрошенной строки

    В общем случае случае осмысленный код для получения значения единственной колонки будет таким
    $sql = "SELECT link FROM tablet where id=?";
    $result = $conn->execute_query($sql, [$a]); 
    $link = $result->fetch_column();

    Но как правильно замечено в комментариях, правильнее будет рандомизировать сразу в запросе, причем все делать одним запросом, а не тремя
    function Axelmo($conn) {
        $sql2 = "SELECT link FROM tablet ORDER BY rand() LIMIT 1";
        return $conn->query($sql)->fetch_column();
    }

    Ну и чисто для иллюстрации, как сделать запрос с ограничением по id
    function Axelmo($min, $max, $conn) {
        $sql2 = "SELECT link FROM tablet where id >= ? AND id <= ? ORDER BY rand() LIMIT 1";
        return $conn->execute_query($sql, [$min, $max])->fetch_column();
    }
    Ответ написан
    1 комментарий
  • Можно ли корректно заполнить создаваемое поле таблицы данными из другой таблицы?

    Adamos
    @Adamos
    UPDATE TableA LEFT JOIN (
    SELECT MIN(Id) AS id, Name FROM TableB GROUP BY Name
    ) AS b
    ON TableA.Name = b.Name
    SET TableA.TableBId = b.id

    Соотвественно, до этого запроса - ALTER TABLE с добавлением столбца TableBId, после - ALTER TABLE с удалением Name.
    Можно сделать "ногой в дверь", записывая значение прямо в Name и потом ALTER TABLE его с переименованием и сменой типа, но я бы не рисковал ;)
    Ответ написан
    3 комментария
  • Зависит ли скорость записи в БД от количества в ней записей?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    В общем случае не зависит
    В каждом конкретном случае, если вдруг будет зависеть, надо разбираться отдельно.
    Сам по себе вопрос - это одна из тех проблем, которыми не следует забивать себе голову заранее.
    Ответ написан
    Комментировать
  • Как избавляться от ненужных записей в бд?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    В дальнейшем это повысит нагрузку на бд при поиске записей.
    Когда записей будет под миллион, запустите 1 раз удаление старых неактивированных аккаунтов и выиграете еще аж 500 (а может даже 5тыщь!) записей, это сильно поможет...
    Ответ написан
    Комментировать
  • Как сгруппировать по двум полям?

    @alexalexes
    SELECT TOP (100)   
    [error_number] ,
    [error_desc],
    COUNT([error_number])as total      
    FROM Db.tab_error
    group by error_number, error_desc

    Добавить и в select, и в group by.
    Группировка не распадется, если у всех одинаковых error_number строго одно и тоже содержание error_desc.
    Если error_desc не обладает таким свойством, то придется использовать оконную функцию:
    SELECT TOP (100)   
    [error_number] ,
    [error_desc],
    COUNT(*) over (partition by [error_number]) as total      
    FROM Db.tab_error
    Ответ написан
    1 комментарий
  • Как по ВПН соединить две сети с одинаковым поддиапазоном 192.168.0.1/24?

    @asmelnik
    Классика говорит, что НЕТ!
    Сети НЕ ДОЛЖНЫ ПЕРЕСЕКАТЬСЯ!

    "Костыли" при определенных условиях возможны, вроде proxy arp, проброса портов и.т.д.
    Но они имеют свои ограничения и условия применимости.

    Самое правильное одну из сетей перекинуть в другой диапазон, например
    192.168.1-255.0/24
    Если так уж принципиально 192.168.0.xxx
    Можно одну сеть сделать
    192.168.0.0/25 (адреса 1-126)
    вторую
    192.168.0.128/25 (адреса 129-254)
    Если в каждой сети менее 120-ти хостов,
    и маршруты 192.168.0.0/24 указать в VPN.

    Учитывая отсутствие возможности изменения второй сети и жесткое условие сохранения адрессации -- нормального решения НЕТ!
    Узел 192.168.0.12 в сети 1 НИКОГДА не сможет связаться (по IP) с узлом 192.168.0.12 в другой сети.
    Вот СОВСЕМ!
    (Проброс портов не считаем, это несколько иное условие).
    Ответ написан
    8 комментариев
  • Датаграмма UDP может прийти в неверном порядке. Как это?

    hint000
    @hint000
    у админа три руки
    То есть я могу отправить:
    012345
    А получить:
    253401
    Во-первых, если важно получить 012345, то надо посылать в одной датаграмме 012345, а не в шести отдельно по одному символу.
    Во-вторых, даже если отправлять по одному символу, то вероятность получить 253401 очень мала.
    Скорее вы можете получить 02345 или 01345 или 135, т.е. простую потерю пакетов. Неверный порядок возможен, но в реальной жизни будет редко встречаться (он может быть вызван повторной отправкой кадров, т.е. проблемами на более низком уровне OSI, тогда первая датаграмма может задержаться из-за переотправки кадров, из которых она состоит, а вторая датаграмма может пройти без ошибок в кадрах и оказаться у получателя раньше первой; а ещё они могут пойти разными маршрутами с разной задержкой, но это уже экзотика).
    Ответ написан
    2 комментария
  • Как выполнить копирование базы данных внутри исходного сервера?

    tsklab
    @tsklab Куратор тега SQL Server
    Здесь отвечаю на вопросы.
    Перевести базу данных в автономный режим. Скопировать её файлы. Присоединить их как новую базу данных.
    Через SSMS не получится присоединение с изменением имени, поэтому используйте скрипт:
    USE [master]
    GO
    CREATE DATABASE [Testus_copy] ON 
    ( FILENAME = N'C:\MSSQL\Testus_copy.mdf' ),
    ( FILENAME = N'C:\MSSQL\Testus_copy.ldf' )
     FOR ATTACH
    GO
    Ответ написан
    3 комментария
  • Как гарантировать последовательную запись данных без пропусков id?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Таблицы на основе генераторов или sequences обычно ствавят главной задачей - обеспечить
    уникальность id в первую очередь
    . С эти sequence справляется.

    Гарантировать блокировку или захват sequence они не могут так как Postgres создавался
    как много-пользовательская БД
    . Тоесть много сессий обладают правом в любой момент
    взять из sequence следующее значение
    . Поэтому требование хронологии - это как эксклюзивный
    лок объекта. Слишком жесткое требование. И никому не нужное. Если б так БД работали то
    они теряли бы в производительности и ждали-бы чтоб какая-то главная сессия отпустила таблицу.

    Выход есть - брать ранг записи извне. Тоесть само приложение должно быть поставщиком
    таких номеров. А БД будет просто их вставлять.

    Еще вариант - в уже после загрузки обновить одно полей одной транзакцией как row_number
    сортируя по любому признаку.
    Ответ написан
    6 комментариев
  • Как сказать «ничего не делаем» используя условные операторы?

    @nApoBo3
    Continue

    Но вообще считается "дурным" тоном использовать не "основное" поведение внутри if.
    Ответ написан
    Комментировать
  • Как вернуть NULL если ничего не найдено в SQL?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    А есть какая-то адекватная причина, по которой вам требуется получать такой странный результат?
    Ответ написан
    Комментировать