• Как составить такой запрос с поиском по тегам?

    @alexalexes
    Поправил решение. Нужен оконный вариант функции count. Если будете испытывать на mySQL ниже 8 версии, то нужен будет велосипед с пользовательскими параметрами, чтобы сделать аналог такой функции.
    PS: Прелесть такого решения в том, что group by не нужно прописывать, окно его инкапсулирует по своей сути.
  • Как составить такой запрос с поиском по тегам?

    @alexalexes
    Попробуйте решение 2.
    Проверьте оба решения на производительность, distinct может оказаться коварнее, чем куча лишних join.
  • Как сделать SQL-запрос выбора по значениям метаданных?

    @alexalexes
    Приведите фрагмент данных таблицы и какую итоговую выборку надо получить из этого фрагмента.
  • Как найти дубли в массивах postgres?

    @alexalexes
    Вместо:
    translate(c.qualification_documents,'{}','')
    Используйте:
    replace(replace(c.qualification_documents,'{',''),'}','')

    Эта функция нужна, чтобы обрезать начальные и конечные фигурные скобки.
    Дано: '{1,2,3}'
    Для этой строки порядок действий такой:
    1. translate - убираем скобки -> '1,2,3'
    2. string_to_array - преобразуем строку в тип данных массив -> [1,2,3]
    3. unnest - разворачиваем массив на несколько строк -> первая строка: 1, вторая: 2 ...
    4. cast - в каждой строке преобразуем значение колонки в целое число.
    Все, теперь можно использовать в SQL.
    PS: Если атрибут qualification_documents уже по типу данных является массивом, то шаги 1, 2 и 4 не нужны, куча вложенных функций заметно уменьшится.
    Скорее всего, в вашем случае достаточно использовать unnest (добавил решение Б).
  • Почему не работает рекурсивный вызов?

    @alexalexes
    sort = sort.sort()
    ; поставьте в конце, лучше не бросайте операторы без него, даже если JS позволяет это делать.
    Когда дописывать код будете, то споткнетесь об эту фичу.
  • Как преобразовать запрос в файле sql в формат json?

    @alexalexes
    Если это бэкап базы, то нужно взять из файла строки под insert предложением - это данные таблицы (скорее всего это и будет основное "сырье" для парсинга).
    Нужно пропускать конструкции, которые реконструируют структуру базы, например, создание таблиц, функций, процедур и т.д.
  • Как найти картинки с прозрачным фоном?

    @alexalexes
    Как идею решения в лоб можно использовать следующие шаги.
    1) Обрабатывать только те файлы, форматы которых могут записывать сведения о прозрачном цвете (gif, png).
    2) При загрузке данных текущего файла изображения использовать ту функцию, которая позволяет получить сведения о цвете пикселя с параметром альфа-канала.
    3) Пробежаться по всем пикселям изображения и подсчитать число пикселей, которые имеют значение альфа-канала не более некоего фиксированного порога M значения прозрачности.
    4) Получить долю (%) прозрачных пикселей по критерию 3 от общего количества пикселей.
    5) Если эта доля больше некоего фиксированного порога N (%), то считаем, что в изображении преобладает прозрачный цвет (возможно, он будет фоном, но это не точно).
  • Не могу выйти из безопасного режима?

    @alexalexes
    Узнать, каким способом был создан ключик в процессе установки опции шифрования диска, и собственно, воспользоваться им. Не обязательно, что ключ лежит в учетке MS.
    https://support.microsoft.com/ru-ru/help/4530477/w...
    PS: Не будет ключа - не будет доступа к данным, ничего не попишешь.
  • Как найти связанные элементы с разных таблиц?

    @alexalexes
    Структура у вас такая будет:
    1) wall - id, message
    2) attachments - id, wall_id, path
    где wall_id ссылается на запись таблицы wall.
    Проблема в том, что если вы хотите сохранять записи вложений первыми, то вы не знаете какой вставить wall_id.
    Есть куча вариантов как это решить.
    Вариант 1.
    Когда создается сообщение, клиент отправляет сразу и сообщение и вложения.
    Тут сложностей со вставкой нет. Сохраняем запись wall, получаем его wall_id, используем для вставки вложений.
    Вариант 2.
    Мы не можем создать "честную" запись wall сразу, не отправив заранее записи вложений.
    Решений варианта 2 первое.
    Сохраняем записи вложений с опущенным параметром wall_id, например wall_id приравниваем null.
    Когда добавляем запись wall, то известный wall_id вписываем в записи вложений, где было null.
    Но учтите, если в вашей системе будет несколько пользователей, то нужно как-то различать, какой пользователь или сеанс пользователя мусорит несвязными записями вложений во время редактирования сообщения.
    Для этого в таблице вложений должен использоваться дополнительный атрибут, указывающий на user_id или на его сеанс session_id, так:
    attachments - id, wall_id, user_id, path
    или так:
    attachments - id, wall_id, session_id, path
    И при связывании нужно брать не просто wall_id is null записи, а указывать, что брать нужно записи конкретного пользователя или сеанса.
    Если пользователь бросил редактирование сообщения без сохранения, и при этом он оставил какие-то несвязные записи, то в вашей системе нужно предусмотреть скрипт, который будет периодически подчищать несвязные записи.
    Для определения давно ли добавили записи, чтобы удалять сильно устаревшие, в таблице вложений нужно предусмотреть атрибут даты и время создания вложения. Чтобы можно было легко написать запрос, который подчистит эти старые записи, учитывая их время создания.
    Решение варианта 2 второе.
    Создаем временную запись wall, как только пользователь запросит форму создания сообщения.
    Те же проблемы отслеживания временно созданной записи wall и пути решения такие же как в случае несвязных вложений.
  • Как найти связанные элементы с разных таблиц?

    @alexalexes
    Если у вас повторно используются вложения, то сама задача велит использовать третью таблицу, как вам советовали выше.
    3) wall_attachments - id, wall_id, atach_id.
    Если нет необходимости повторно использовать вложения, то достаточно атрибута внешнего ключа в табилце вложений.
    attachments - id, wall_id, path
    PS: наименование parent_id используется, как правило, для ссылки на записи той же таблицы, это для описания древовидных структур подходит.
  • Как перекрасить таблицу?

    @alexalexes
    Если там по макету нужен какой-нибудь нежно-голубовато белый, то он может не быть строго #fff.
  • Как перекрасить таблицу?

    @alexalexes
    Вы не смогли добраться до css файла (мешает кэш и т.п.), или не смогли определить, что цвет границы таблицы задается в этом селекторе?
    table, table th, table td
    {
        font-size: 16px;
        border: 1px solid #2e7396;
        padding: 5px 10px;
    }
  • Не работает метод .remove() в JavaScript?

    @alexalexes
    list.remove(item_id);
    А вы уверены, что этот метод будет ожидаемо удалять элемент порядка item_id в контейнере list?
  • Почему не скачивается файл?

    @alexalexes
    include предназначен для монтирования выполняемого кода php, а не для данных.
    У вас скорее всего проблема развязать логику отдачи файла от штатной выдачи контента обычной страницы.
    Если не получается, то выдачу файла нужно вынести в отдельный php-скрипт.
    Например, в index.php у вас генерация HTML, а в download.php - отдача файлов клиенту.
    Подключать download.php каким либо образом к index.php не нужно, нужно клиенту обратиться к нему по url в браузере:
    имя_вашего_сайта/download.php
  • Почему не скачивается файл?

    @alexalexes
    Если вы пытаетесь сконструировать содержимое файла как HTML, то имейте ввиду, что чтобы Excel воспринял содержимое, нужно руководствоваться как минимум нотацией XML.
    Чтобы посмотреть пример генерации такого файла, в MS Excel сохраните файл как "Таблица XML 2003".
  • Почему не скачивается файл?

    @alexalexes
    Откройте скачиваемый файл в блокнотоподобном текстовом редакторе и посмотрите в начале файла, что там есть помимо бинарных данных. Возможно, php отдает не только тело файла, но и какое-нибудь предупреждение.
  • Как интерпритатор при разбвивании на лексемы понимает, что пробел это лексема, а не разделитель?

    @alexalexes
    Интерпретатор в ходе синтаксического разбора при посимвольном проходе текста кода, руководствуясь графом синтаксического разбора (как наглядный пример, можно взглянуть на диаграммы Вирта, особенно, на реализации разбора чисел в разных системах счисления), при проходе символа пробела фиксирует состояние того, что обнаружена лексема var, из вершины графа этого состояния имеются дуги только на символы начала лексемы переменной - определяется тем самым то, что ожидается при чтении следующего символа.
  • Как удалить добавленный класс?

    @alexalexes
    Значит, нужно предотвратить всплытие события клика на другие обработчики. См. ответ на вопрос.