• Где ошибка в строке запроса к PosgreSQL?

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

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

    tsklab
    @tsklab Автор вопроса, куратор тега SQL Server
    Здесь отвечаю на вопросы.
    SELECT NEWID() FROM GENERATE_SERIES(1, 10)
    В MS SQL 2022 добавили GENERATE_SERIES.
    Ответ написан
    Комментировать
  • Как проверить бекап postgres что он не битый?

    Melkij
    @Melkij
    PostgreSQL DBA
    Проверить бекап - путь только один, это восстановиться с него и посмотреть всё ли на месте. То самое известное, что все администраторы по наличию бекапов делятся на 3 типа: кто не делает бекапы, делает бекапы и тех, кто проверяет восстановление из бекапа.

    прервался ли pg_dump в какой-то момент - смотреть можно, как обычно, по коду возврата, а так же по stderr.

    PS: довольно тревожная мысль не сохранять права доступа
    Ответ написан
    5 комментариев
  • Как реализовать вместо рандома очередь, 1, 2, 3, 4 и т.д.?

    New_Horizons
    @New_Horizons
    Бред:
    где-то нужно хранить текущее "обновление". Проще всего в сессии. И с каждым обновлением страницы делать инкремент. И когда там будет 10 выводить "Да". Ну это сама идея.
    Ответ написан
    Комментировать
  • Как импортировать данные из csv в Postgres?

    Melkij
    @Melkij
    PostgreSQL DBA
    create temp table import_data (...);
    copy import_data from '/path/to/file' (format csv, ...);
    insert into tablename (...) select .. from import_data where not exists (select from tablename where tablename.phone = import_data.phone) on conflict do nothing;
    Ответ написан
    Комментировать
  • Нужно ли хорошо разбираться в алгоритмах джуну?

    @alekcena
    Нелинейный наставник
    Ну, я когда начинал не изучал алгоритмы.
    На работу это не влияло.

    Для меня в самом начале были важнее навыки:
    1) Декомпозиция задачи на мелкие, мелкие задачи оказывается решить не так уж и трудно.
    Правильно описанная задача это половина решения.
    2) Правильно гуглить как решить мелкую задачу.
    3) Просто изучать смежные темы.
    На одном знание языка, далеко не уедешь, алгоритмы конечно круто.
    В большинстве случаев, алгоритмы приходят сами.
    Как говориться "Учитель приходит тогда, когда ученик готов.

    Когда я чуть подкачался. Для меня важным навыком оказалось
    1) Читать документацию, как не странно, в ней можно найти 99% проблем.
    2) Понимать конструкции языка программирования, бегло его читая.
    3) Не использовать крутые конструкции, если они усложняют чтение.
    Да, этим грешат все, кто познал много крутых штук.
    Но по факту они кроме как усложнение, ничего не делают.
    4) Понимание, что ты работаешь не один, следует из пункта 3.
    Код нужно писать что-бы его можно было прочесть.

    А уже потом, ты изучаешь алгоритмы, и понимаешь, что ты и так их используешь.
    Тк как что есть алгоритмы? Все есть алгоритмы.
    Ответ написан
    4 комментария
  • Как можно применить и закрепить на практике полученную теорию?

    Привет. Только практика. Или ты придумываешь задачи себе сам, что на самом деле сложно, или просишь у кого-то, чтоб дали реальный кейс, который можно выполнить или находишь сам на просторах сети... Или решаешь чьи-то проблемы(а-ля фриланс). Можно напроситься на практику в какое-нибудь предприятие, где есть циски, микроты, доменная сеть и в целом инфраструктура. Но там уже вопрос в том, как специалист по информационной безопасности отреагирует и какая вообще политика компании.
    Ответ написан
    Комментировать
  • Как правильно экранировать поля, содержащие разметку?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Если текст содержит HTML теги, которые должны выводиться как есть, то его не надо обрабатывать функцией, которая преобразует теги в HTML сущности.

    Если же вопрос про обработку данных перед их записью в БД, то надо задать себе вопрос, какое отношение функция htmlspecialchars имеет к базе данных.

    Логика - это просто незаменимый инструмент для программиста.
    Ответ написан
    5 комментариев
  • Как заполнить таблицу в MySQL через файл?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Изучите внимательно документацию по LOAD DATA.

    Во-первых, необходимо правильно указывать опции парсинга - разделитель, терминатор, квотирование и пр.

    Во-вторых, хорошим тоном считается указывать не только таблицу назначения, но и конкретные поля. А если импортируемый файл содержит данные не для всех полей, или порядок полей в файле и таблице не совпадает, то указание полей становится просто-таки обязательным и необходимым.

    В третьих, если данные не могут импортироваться напрямую, или если в процессе импорта необходима какая-то обработка импортируемых данных (например, корректировка формата даты), то следует использовать ещё Input Preprocessing - обработку данных между чтением из файла и записью в таблицу.

    id у меня auto-increment, пробовала и NULL, и 0, и просто цифрами заполнять - ни в какую.

    Пункт "во-вторых" в полный рост.

    Ну и любопытно, где именно Вы пробовали и NULL, и 0, и просто цифрами заполнять - в показанном Вами запросе под это просто нет места.
    Ответ написан
    Комментировать
  • Как правильно составить данный запрос?

    iMedved2009
    @iMedved2009
    Не люблю людей
    Тогда у вас какая то странная структура.

    наверное вам надо как-то так

    https://sqlize.online/sql/mariadb/ed3f54e80ceedc7d...
    select 
      users.id, users.name, group_concat(country.country) as visited 
    from 
      users
    left join user_to_country on user_to_country.user_id = users.id
    left join country on user_to_country.country_id = country.id
    where u_status = 1 
    group by users.id, users.name;
    Ответ написан
    1 комментарий
  • Как при оформлении отправить в базу заказ с несколькими товарами?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1 таблица - заказы (id, дата, статус, id_клиента, ...)
    2 таблица - товары в заказах (id_заказа, id_товара, количество, цена)
    Ответ написан
    2 комментария
  • Необходимо вывести список товаров числом?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    select count(*) from product

    Это называется не "вывести товары одним числом", а "получить количество строк в таблице". И по корректной формулировке ответ в поисковике находится за два клика. Как говорится - в правильно сформулированном вопросе уже заложена половина ответа. А программирование - дело точное, и формулировки в нём тоже должны быть точные.
    Ответ написан
  • Как получить нужные id из mysql?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    GROUP BY, MAX(), HAVING
    Ответ написан
    Комментировать
  • Как обновить сразу все записи с уникальным ключом?

    @Akina
    Сетевой и системный админ, SQL-программист.
    create table test(
      id SERIAL PRIMARY KEY,
      num int,
      t text,
      constraint u_constrainte unique (num, t) DEFERRABLE 
    )

    https://dbfiddle.uk/VuwdSZSH

    Можно ли как то сделать сортировку того что нужно обновить перед тем как собственно обновлять записи?

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

    ValeriuCutebov
    @ValeriuCutebov
    Чтобы получить значение transaction_status из ответа на запрос, вам нужно сначала декодировать JSON-строку в массив PHP. Это можно сделать с помощью функции json_decode:

    $response = '{"status":"success","1":{"transaction":"8025400","email":"Не указана","amount":"21.38","currency":"RUB","currency_amount":"20.00","comission_percent":"6.90","comission_fixed":"0.00","amount_profit":"20.00","method":"Не выбран","payment_id":"1618399991","description":"Покупка доступа на 2 дня","date":"2023-03-13 19:40:46","pay_date":"2023-03-13 19:40:46","transaction_status":"0","custom_fields":"null","webhook_status":"0","webhook_amount":"0"}}';
    $data = json_decode($response, true);
    $transaction_status = $data["1"]["transaction_status"];

    Затем вы можете использовать переменную $transaction_status в своих условиях if / else:

    if ($transaction_status == 0) {
      echo 'Статус транзакции = 0';
      exit(0);
    } else {
      echo 'Статус транзакции не равен 0';
    }

    Надеюсь, это поможет!
    Ответ написан
    5 комментариев
  • Можно ли написать SQL запрос с выражением в WHERE и в SELECT, но без повторения этого выражения и без вложенного SELECT?

    @alexalexes
    Но будет 2 вычисления MD5

    Выражения в select вычисляются после того, как отобраны строки по условиям в where.
    Если выходная выборка совсем небольшая, то оптимизировать работу функции в колонках не нужно - это экономия на спичках.
    Другое дело, если вы используете вычисляемую функцию в where. Чтобы она быстро работала есть 3 пути:
    1. Если функция вычисляется из данных, которые не зависят от контекста запроса, то нужно отказаться от этой функции, которая вычисляется при каждом запросе. Нужно хранить ее результат в отдельном атрибуте.
    2. Сделать индекс с использованием этой функции на атрибуте, тогда при использовании этой же функции в where сработает индекс.
    3. Если есть возможность, то нужно так преобразовать выражение where, чтобы все аргументы вычисляемой функции или выражения (складываем, вычитаем, умножаем делим, case-им) оказались входными параметрами или константами. Чтобы такое произошло, нужна обратная функция для md5 - reverse_md5. Но такой функции по математическим соображениям не существует.
    Иначе выражение бы выглядело так:
    where value = reverse_md5(:hache)
    Ответ написан
    1 комментарий
  • Как сделать запрос в sqlite?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    self.cursor.execute("SELECT * FROM table1 WHERE colum1 LIKE ?", (f'%{age}%',)).fetchmany(1)
    Ответ написан
    1 комментарий
  • Почему PHP так сравнивает строку и число?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    PHP 8.0
    If both operands are numeric strings, or one operand is a number and the other one is a numeric string, then the comparison is done numerically.

    Более ранние версии PHP:
    If a string is compared to a number or a numeric string then the string was converted to a number before performing the comparison.

    То есть, когда вы в 7.4 сравниваете строку с числом, то строка в любом случае приводится к числу. В 8.0, при сравнении нечисловой строки с числом, число будет приведено к строке.
    А дальше у вас, похоже, проблема XY. Вам надо искать не "как сравнить через ==", а как решить исходную задачу, для которой нужно такое сравнение.
    Ответ написан
    Комментировать
  • Может ли MySQL глючить?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Все работает в 99% нормально, но иногда проскакивает выдача другой строки, не с таким полем, по которому ищем.
    Это просто значит 99% проблема в коде. Логируйте в файл запрос, параметры и результат выполнения, скорее всего логика работает не так как вы задумали. Как только словите ошибку - смотрите свой лог, наверняка запрос будет отличаться от ожидаемого.
    Ответ написан
    2 комментария
  • Зачем надо (1) в COUNT?

    OrlovEvgenii
    @OrlovEvgenii
    golang developer / DevOps
    В SQL, функция COUNT используется для подсчета количества строк, которые соответствуют определенному условию. Она может принимать различные аргументы, в том числе числовые значения, столбцы, выражения и т.д.

    В данном случае, в качестве аргумента COUNT используется число 1. Однако, это значение не имеет никакого значения для подсчета количества строк в таблице. Оно выбрано скорее для упрощения запроса и ускорения его выполнения. Например, в некоторых базах данных, использование 1 вместо столбца имеет меньший размер и может ускорить выполнение запроса.

    Поэтому, если вам нужно просто подсчитать количество строк в таблице, можно использовать любой аргумент внутри функции COUNT, в том числе и 1. Однако, в общем случае, для подсчета количества строк можно использовать и другие конструкции, например, COUNT(*) или COUNT(имя_столбца).
    Ответ написан
    4 комментария