Задать вопрос
  • Server 2019 на стационарный пк. возможно ли это?

    @Akina
    Сетевой и системный админ, SQL-программист.
    возможно ли это?

    Да. Но строго x64 - под x86 на эту матерь дров нет и не предвидится.
    Хотя я бы рекомендовал натянуть какой-нить VMM (ESX, Hyper-V и т.п.), а в нём уже виртуалку с сервером.

    как драйвера ставить?

    Как обычно. Либо накачав с вендора (брать дрова для W10), либо через MS UPDATE catalog по ven&dev.
    Ответ написан
    9 комментариев
  • На основании чего PostgreSQL сортирует данные в JSONField?

    @Akina
    Сетевой и системный админ, SQL-программист.
    С точки зрения Постгресса JSON - это текст. И никакой сортировки там не наблюдается. Что положил, то и обратно получил. Что, кстати, позволяет хранить в поле данного типа не соответствующие стандарту значения с дубликатами имён свойств (см. fiddle, последнюю запись).
    Вот JSONB - это уже бинарная строка во внутреннем формализованном формате. И такое кодирование предусматривает в том числе сортировку по ключам в лексикографическом порядке как бинарной строки (binary collation).
    fiddle
    Ответ написан
    Комментировать
  • Как составить sql запрос?

    @Akina
    Сетевой и системный админ, SQL-программист.
    WITH
    cte AS (
      SELECT *, ROW_NUMBER() OVER (PARTITION BY document_id ORDER BY job_id DESC) rn
      FROM my_table
      )
    SELECT document_id, job_id, person_id
    FROM cte 
    WHERE rn = 1;

    И в качестве бонуса
    SELECT DISTINCT 
           document_id,
           MAX(job_id) OVER (PARTITION BY document_id) job_id,
           FIRST_VALUE(person_id) OVER (PARTITION BY document_id ORDER BY job_id DESC) person_id
    FROM my_table
    Ответ написан
    Комментировать
  • Как соединить интернет класс с сервером?

    @Akina
    Сетевой и системный админ, SQL-программист.
    16 ноутбуков с выходом в интернет. Если подключить к коммутатору, то IP адресов не хватает. Думаю как-нибудь через маршрутизатор подключить, но пока не знаю, как это сделать и какой маршрутизатор для этого подходит. Маршрутизатор будет получать IP адрес от сервера школы.

    Иными словами, в качестве маршрутизатора в инет и одновременно DHCP-сервера выступает этот самый "сервер школы".
    Соответственно решение - на сервере в настройках DHCP-сервера создать ещё один скоп /27 или шире, и смаршрутизировать его в интерфейс/VLAN, через который подключается коммутатор класса.
    Задача должна решаться администратором, а не первым попавшимся под руку неспециалистом.
    Ответ написан
    2 комментария
  • Как сделать дополнительную выборку записей?

    @Akina
    Сетевой и системный админ, SQL-программист.
    WITH 
    cte AS (
        SELECT * , 
               ROW_NUMBER() OVER (ORDER BY `date` DESC, id DESC) rn, 
               DENSE_RANK() OVER (ORDER BY `date` DESC, id DESC) dr
        FROM `list` 
        WHERE user='1' 
        )
    SELECT *
    FROM cte
    WHERE dr <= (
        SELECT dr
        FROM cte
        WHERE rn = 25
        )

    Версия сервера: 5.6.51 - MySQL Community Server (GPL)

    SELECT *
    FROM `list`
    WHERE user='1' 
      AND `date` >= (
        SELECT `date`
        FROM 'list'
        WHERE user='1' 
        ORDER BY `date` DESC, id DESC LIMIT 24, 1
    )
    Ответ написан
    4 комментария
  • JSON_REMOVE меняет порядок ключей?

    @Akina
    Сетевой и системный админ, SQL-программист.
    есть поле в таблице с JSON, в нем важен порядок ключей.

    Бред сивой кобылы. Согласно стандарту, свойства в объекте не имеют такой характеристики как относительный порядок. Они являются ключами коллекции - поэтому, кстати, ещё и не могут дублироваться.

    Кстати, сразу понятно, что поле имеет текстовый тип данных, а не JSON. Иначе бы эффект изменения порядка ключей в текстовом представлении JSON давно бы вылез.

    Если такой порядок важен - следует использовать массив, а не объект.
    Ответ написан
  • Таблица маршрутизации?

    @Akina
    Сетевой и системный админ, SQL-программист.
    1. В сети может быть несколько маршрутизаторов, и разные конечные узлы могут быть доступны через разные маршрутизаторы. Таблица позволяет знать, через кого слать трафик.
    2. На компьютере может быть несколько внешних сетевых интерфейсов (а ещё есть localhost), и разные конечные узлы могут быть доступны через разные интерфейсы. Таблица позволяет знать, через кого слать трафик.
    Ответ написан
    Комментировать
  • Почему может не работать запрос с left join в postgresql?

    @Akina
    Сетевой и системный админ, SQL-программист.
    там, где нет записи в таблице other_table будет стоять null.

    Ну вот теперь подумай - как на этот NULL среагирует where other_table."order_id"=10?

    .. on gs=other_table."date" AND other_table."order_id"=10;
    Ответ написан
    Комментировать
  • Как пофиксить ошибку Incorrect TIMESTAMP value?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Если значение поля с типом TIMESTAMP некорректно (а пустая строка - это некорректное значение) - надо заменить его на корректное.
    • Если поле NULLable - то например на NULL.
    • Если настройки допускают нулевую дату - то на `0000-00-00 00:00:00`.
    • Иначе - на некое предопределённое значение. В зависимости от смысла поля - либо в далёком прошлом, либо в столь же далёком будущем.
    Ответ написан
    Комментировать
  • Как сохранить порядок номеров в запросе?

    @Akina
    Сетевой и системный админ, SQL-программист.
    SELECT * 
    FROM table 
    WHERE id IN (7, 8, 5, 4, 1)
    ORDER BY FIND_IN_SET(id, '7,8,5,4,1');
    Ответ написан
    Комментировать
  • SQLite Как выбрать записи, текстовое поле которых содержит подстроку, регистронезависимо?

    @Akina
    Сетевой и системный админ, SQL-программист.
    LIKE регистронезависим.
    GLOB регистрозависим.
    REGEXP - как напишешь регулярку, так и будет.
    Ответ написан
    Комментировать
  • Как хранятся индексы в postgresql и mysql?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Прочитал, что в mysql в движке innodb индексы делятся на два больших типа - первичный и вторичный

    Понятия первичного и вторичного индексов никак не связаны с СУБД. И это не типы индексов по большому счёту. Просто первичный - однозначно идентифицирует запись (что определяется ограничениями на значение выражения и используемых в нём полей), тогда как вторичный - всего лишь может использоваться для однозначной идентификации, но лишь при условии, что он отвечает всем требованиям-ограничениям для первичного.

    В InnoDB - всего лишь есть дополнение, что при наличии первичного индекса он является также и кластерным. Для других движков и других СУБД такой зависимости может и не быть.

    кластеризованный, как написано хранится с данными

    Не-а. Кластерный индекс - это когда записи в теле таблицы (т.е. сами данные таблицы) хранятся в порядке сортировки по выражению этого кластерного индекса.

    Всегда ли не кластиризованные индексы хранятся в оперативной памяти или это как-то можно регулировать?

    Индексы всегда хранятся на диске. В оперативной памяти индексы могут всего лишь кэшироваться. Для ускорения доступа.

    Я слышал что индексы должны быть в пределах мегабайт, а не гигабайт.

    Или не о том слышал, или не так понял. Индексы никому и ничего не должны по части своего размера, который определяется суммарным размером данных индексного выражения, количеством записей и коэффициентом заполнения.

    Читал, что бывает так, что индекс в таблице индекса хранит сразу данные определенных столбцов, а не ссылки на эти строки в основной таблице.

    Вероятно, речь про INCLUDE-предложение в структуре индекса, имеющееся, например, в SQL Server... т.е. значения полей хранятся в выражении индекса как дополнительные данные, и не используются при сортировке.
    Ответ написан
    Комментировать
  • Как объединить запросы?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Два LEFT JOIN, условие связывания - по id и определённому значению типа.
    Ответ написан
    Комментировать
  • Как составить запрос на выборку авторов в SQL?

    @Akina
    Сетевой и системный админ, SQL-программист.
    SELECT *
    FROM Author
    WHERE NOT EXISTS (
        SELECT NULL
        FROM Book
        WHERE Author.Authorld = Book.Authorld
          AND Book.PublishDateTime >= CURRENT_DATE - INTERVAL 2 YEAR
        )
    Ответ написан
  • Как правильно построить запрос в БД?

    @Akina
    Сетевой и системный админ, SQL-программист.
    SELECT table1.*, 
           EXISTS ( SELECT NULL
                    FROM table2
                    WHERE table2.table1_id = table1.id
                       AND table2.date = @needed_date
                    ) AS row_exists
    FROM table1

    Если точная дата внутри месяца неизвестна, то
    WHERE table2.date BETWEEN @needed_month_1st_day AND @needed_month_last_day
    Ответ написан
    Комментировать
  • Как подставить url на весь столбик?

    @Akina
    Сетевой и системный админ, SQL-программист.
    • Выделить диапазон с числами.
    • Alt-F11
    • Ctrl-G
    • ввести
      for each onecell in selection:onecell.value="https://d21skl.com/"&onecell.value:next

    • Enter
    • Alt-F4
    • Alt-F4

    Ответ написан
    Комментировать
  • Можно ли сделать такое отношение таблиц?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Связь типа M:N между продуктом и материалом должна трактоваться как самостоятельная сущность. И, как любая другая сущность, она может иметь свои собственные атрибуты.

    можно ли в промежуточную таблицу добавлять поле amount или это считается недопустимым?

    Количество в данном случае - атрибут именно связи, а не продукта и не материала. Посему поле количества в связывающей таблице не только допустимо, но и единственно правильно. При условии, что на комбинацию полей (product_id, material_id) наложено требование уникальности. Иначе должна существовать ещё одна таблица, которая ссылается на связующую таблицу и содержит поле количества.
    Ответ написан
    Комментировать
  • Как выбрать последнюю запись с group by?

    @Akina
    Сетевой и системный админ, SQL-программист.
    А решение было близко... раз нужны данные с разных уровней группировки, то либо вертеть подзапросы/CTE, либо использовать оконные функции. Как по мне, второе проще.
    SELECT DISTINCT
           product_id,
           size,
           SUM(orders) OVER (PARTITION BY product_id, warehouse_id, size) AS orders,
           FIRST_VALUE(stocks) OVER (PARTITION BY product_id, warehouse_id, size 
                                     ORDER BY `date` DESC) AS stocks,
           warehouse_id
    FROM stats
    WHERE DATE(`date`) >= '2023-09-01' 
      AND DATE(`date`) <= '2023-09-04';

    fiddle
    Ответ написан
  • Как построить дерево одним запросом c сортировкой по родителю?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Как-то так:
    WITH RECURSIVE
    cte AS (
        SELECT *, LPAD(id, 10, '0') path
        FROM comments
        WHERE parent_id = 0
      UNION ALL
        SELECT comments.*, CONCAT(cte.path, LPAD(comments.id, 10, '0'))
        FROM comments
        JOIN cte ON cte.id = comments.parent_id
    )
    SELECT id, parent_id, content
    FROM cte
    ORDER BY path;

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

    @Akina
    Сетевой и системный админ, SQL-программист.
    созданы два дополнительных сайта на LARAVEL, с одинаковыми каталогами товаров.

    Фраза интенсивно намекает, что эти сайты - полная копия основного. То есть и код, и, главное, структура БД, совпадают с точностью до запятой.

    Соответственно первое, что приходит в голову - организация и настройка репликации. Под основным сайтом мастер, в регионах слейвы. Тогда больше вообще ничего не нужно делать, оно "само" отсинхронизируется.

    Если это по какой-то причине невозможно - то обновление стоимости товаров оформляется в виде необходимых для выполнения операции наборов INSERT/UPDATE/DELETE запросов и выполняется на всех трёх серверах.

    Стоимость товаров часто меняется, и менять цены руками на всех сайтах, основном и региональных - трудозатратно.

    Если это можно, хотя и затратно, сделать руками - то с точки зрения СУБД это ни разу не "часто", а наоборот - чертовски редко.
    Ответ написан