• Какие существуют сервисы в локальной сети для организации отправки уведомлений определенным пользователям?

    @Akina
    Например, в определенной система на определенную запись пользователя поступила некая другая запись, необходимо пользователя об этом уведомить

    msg user_account /SERVER:user_workstation "message text"
  • Не получается правильно сделать запрос?

    @Akina
    Мне нужно чтобы цифра $1,677,000

    Это не цифра и даже не число - это строка.
  • Не получается правильно сделать запрос?

    @Akina
    Я бы ещё добавил WHERE, чтобы не все записи обрабатывать. Скажем, WHERE mt1.meta_value LIKE '$%'.
  • Почему IP адрес при подключении к роутеру по проводу 169.254.x.x?

    @Akina
    Обычно именно такие симптомы наблюдаются при частичном повреждении (изгиб, окисление) одного из проводников разъёма (обычно на устройстве, крайне редко на кабеле) на пинах 4-5 или 7-8. Как итог - физическое подключение устанавливается (согласование скорости выполняется нормально), а вот с передачей данных затык. А на том кабеле, что работает - просто ножи разъёма на полмиллиметра вперёд по сравнению с остальными.

    не пингуется ни в одну ни в другую сторону.

    Пинг - это тест слишком высокого полёта. Смотри статистику интерфейса (количество переданных и принятых байтов/пакетов).

    Пробовал как с компьютером на Windows 10 так и на iMac.

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

    @Akina
    Вадим Мурашкин, угу, писал... вот только КАКОЙ контакт? Тебе ж прилетел только ид категории...
  • Сформировать правильный SQL запрос или поменять структуру таблиц?

    @Akina
    Вадим Мурашкин,
    Если количество "баллов" категорий совпадает, то должна выводиться только та, которую запросили (извне прилетает ID категории category_id).

    Так тут ещё и параметр затесался? тогда вообще каша и никакой ясности...

    В общем, глянь для затравочки: https://dbfiddle.uk/?rdbms=mariadb_10.4&fiddle=77a...
    Для каждого юзера получена "максимальная" категория, и помечено, совпадает она с запрошенной или нет.
  • Сформировать правильный SQL запрос или поменять структуру таблиц?

    @Akina
    Вы бы бы указали точно свою СУБД, включая точную версию, что ли. Потому как задача решается по щелчку пальцев оконной функцией в CTE - но поддерживает ли всё это СУБД?

    Привожу таблицу с тестовыми данными:

    И чё нам с этой "весёлой картинкой" делать? Выложи всё то же, но в виде кода CREATE TABLE + INSERT INTO.

    если у контакта три категории с total_points 2, 0 и 8 соответственно, то категория этого контакта - 3 (с total_points 8).

    А если 5,1,5? первая? третья? обе? что-то ещё?
  • Почему sql запрос возвращает NULL?

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

    Скорее всего, программист не учёл, что значение может начинаться с числа.
  • Почему sql запрос возвращает NULL?

    @Akina
    https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=d3a8b3...

    Любые `text`, которые при CAST к числу, дают не ноль, в исходном запросе дадут "неверный" результат.

    В качестве паллиативного решения предлагаю добавить в начало значения поля для записей, где оно начинается числом, какой-нибудь нечисловой символ, не сильно влияющий на внешний вид вывода. Например, подчёркивание.
  • Почему sql запрос возвращает NULL?

    @Akina
    в данном запросе должно было вернуться не Шерсть, а 100% полиэстер

    Тогда не вижу проблемы.

    После подстановки результата вместо подзапроса имеем
    SELECT IF( !('100% полиэстер'), '100% полиэстер', 'NULL' )

    Выражение условия приводится к числовому типу. Поскольку существует числовой префикс, он и получается. То есть делаем очередную подстановку и получаем

    SELECT IF( ! 100, '100% полиэстер', 'NULL' )

    100 в булевом контексте интерпретируется как TRUE. NOT 100 соответственно интерпретируется как FALSE. Делаем очередную подстановку и получаем

    SELECT IF( FALSE, '100% полиэстер', 'NULL' )

    Теперь понятно, почему возвращается 'NULL'?
  • Можно ли в хранимых процедурах создать временную функцию?

    @Akina
    А можно ли создать временную функцию в хранимой процедуре?

    А зачем? как-то больно на XY похоже...
  • Почему sql запрос возвращает NULL?

    @Akina
    Null не может никак интерпретироваться.

    Между терминами "интерпретироваться как" и "приводиться к" - дистанция огромного размера.

    а теперь давайте усложним, представим что вложенный запрос возвращает шерсть.
    select if('шерсть', 1, 2);

    Условие содержит выражение 'шерсть'. Это выражение, согласно логике работы IF(), приводится к типу BOOLEAN, который на самом деле алиас TINYINT(1). То есть к числовому типу. Согласно правилам приведения, которые использует MySQL, при приведении строки к числу берётся числовой префикс строки, а при его отсутствии (строка начинается с нецифрового символа) результатом приведения будет ноль. Ноль интерпретируется как FALSE (или, если строго - то FALSE является алиасом целочисленного значения ноль). И выбирается альтернативный вариант.

    Что "весело"? Всё логично и однозначно.
  • Почему sql запрос возвращает NULL?

    @Akina
    Николай, Удалите из oc_product_attribute_test все записи, кроме 5-7 штук, проблемную тоже оставьте. Что-то типа DELETE FROM oc_product_attribute_test WHERE product_id NOT BETWEEN 19440 AND 19450; Проверьте, что проблема по-прежнему воспроизводится. Сделайте дамп и выложите - попробуем воспроизвести проблему и понять её источник.

    А, ещё одно. Так, сбоку. А нафига нужен индекс KEY `1`? Он по идее вообще не должен использоваться ни в одном запросе, кроме тех, для которых он покрывающий.
  • Почему sql запрос возвращает NULL?

    @Akina
    (null) - это NULL. Надеюсь, это вопросов не вызывает?

    !(null), как я сказал выше, "!(NULL) - нормальное выражение булева типа, имеющее значение NULL".

    Так что да - и то, и другое значение есть NULL. Который интерпретируется как FALSE (это я тоже говорил выше). Что в соответствии с логикой работы функции IF() (также описанной выше) приводит к выбору альтернативного значения. В обоих запросах.

    И что не так-то? что не работает?
  • Почему sql запрос возвращает NULL?

    @Akina
    Мне уже не нравится то, что данные в UTF8 (чарсет для отдельных полей не указан, значит, применяется дефолтный чарсет таблицы), тогда как и сервер, и соединение работают в UTF8MB4. Очень теоретически это может вызывать проблемы. А сверху ещё наслаиваются проблемы несовпадения COLLATION для данных и для литералов. MySQL в принципе считает эти чарсеты совместимыми, а collation вообще приводит неявно и хрен поймёшь по каким правилам...

    Правда, всё это к именно описанной проблеме приводить не должно.

    Так, следующий вопрос. Проблема - воспроизводима? т.е. если pa.product_id = 19442 косячит - то косячит абсолютно всегда? А если выгрузить десяток записей из таблицы, включая и запись для этого продукта, и положить в отдельную таблицу указанной структуры - всё равно проблема воспроизводится? А если этот же запрос выполнять не через PHP, а из клиента командной строки - проблема так же остаётся и воспроизводима?

    PS. Charset / collation можно было бы дать текстом, как сделано для CREATE TABLE. А все три вывода - завернуть тегом кода, а не цитаты, для сохранения форматирования вывода.
  • Почему sql запрос возвращает NULL?

    @Akina
    Дмитрий,
    сразу лишаются смысла ибо при отсутствии записи будут давать один и тот же вариант.

    Да, при отсутствии записи оба дадут 'NULL' (обращаю внимание - это не NULL, а 4-символьный строковый литерал с таким значением).

    Насчёт смысла ничего не скажу - это к автору вопросы.

    ибо кастинг null к boolean работать не будет

    Да работает он, работает!

    Правда, в MySQL ещё следует обычно учитывать неявное приведение типов (в нём вообще такого базового типа данных как BOOLEAN - нет), но не в данном случае. К слову, с точки зрения MySQL NULL при любых проверках действует как FALSE. Что обычно приводит к непониманию работы CHECK constraint, который, в отличие от IF(), проверяет, наоборот, на FALSE - но тут достаточно просто запомнить.
  • Почему sql запрос возвращает NULL?

    @Akina
    Можно в MySQL запустить

    Можно и не запускать. Ибо в полном соответствии с написанным выше оба запроса вернут двойку.
  • Почему sql запрос возвращает NULL?

    @Akina
    Что-то у тебя всё плавает... запрос, который по твоему заверению возвращал "Шерсть", тут вернул "100% полиэстер", второй запрос вернул значение с маленькой буквы, хотя в вопросе написано с большой...

    К самим значениям в хексах претензий нет - честная кириллица.

    Структура таблицы oc_product_attribute

    Это не структура, а, я извиняюсь, чушь собачья. Структура - это полный и не тронутый редактированием результат выполнения SHOW CREATE TABLE tablename;

    Теперь проверяем второе подозрение. Выкладывайте структуру таблицы, а также результат выполнения SHOW VARIABLES LIKE 'char%'; и SHOW VARIABLES LIKE 'coll%';
  • Почему sql запрос возвращает NULL?

    @Akina
    Предположу что стоит это понимать как то что NULL это специфическое значение, и для SQL и попытка привести к булеан через !(NULL) не работает;

    Бред.

    Напомню, что булево значение может иметь три разных варианта - TRUE, FALSE и UNKNOWN. Вот последнее в терминах SQL и есть NULL. Так что !(NULL) - нормальное выражение булева типа, имеющее значение NULL.

    Логика работы IF() тупая и дубовая. Получили TRUE - выполняем первую альтернативу, иначе вторую, и неважно, FALSE это или NULL.
  • Почему sql запрос возвращает NULL?

    @Akina
    Возвращает корректное значение - Шерсть

    Что вернёт SELECT HEX(pa.text) FROM ... ?