Страница 1 из 2

Нужна подсказка проверки в поле Сущность Аякс на пустоту

Добавлено: 05 июл 2022, 13:06
alcompstudio
Добрый день!

Есть поле Сущность Аякс (множественный выбор), которое используется для автоматизации связывания записей по MySQL запросу (конструкция условия там типа id in ([5098]) )

Если поле 5098 заполнено (хотя бы 1 значение), то автоматизация работает. Но если поле пустое, то вылетает ошибка MySQL. Я так понял, нужно добавить в условие проверку на "пустоту". Как правильно поставить проверку, какие операторы/функции в MySQL за это отвечают?

Пробовал

Код: Выделить всё

id in ([5098]) and [5098] !=''
, но познаний не хватает, как правильно написать?

Re: Нужна подсказка проверки в поле Сущность Аякс на пустоту

Добавлено: 05 июл 2022, 15:04
alexinc
Может быть так:
id in ([5098]) and [5098] NOT NULL

Re: Нужна подсказка проверки в поле Сущность Аякс на пустоту

Добавлено: 05 июл 2022, 15:58
alcompstudio
alexinc писал(а): 05 июл 2022, 15:04 Может быть так:
id in ([5098]) and [5098] NOT NULL
тоже ошибка

Код: Выделить всё

Database Error: 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '89 NOT NULL' at line 1
Query: select e.id , ( (select ((func100.parent_item_id)) from app_entity_88 func100 where func100.id>0 and func100.id=e.parent_item_id limit 1) ) as field_5940, (e.parent_item_id) as field_5947 from app_entity_172 e where id in (84,89) and 84,89 NOT NULL
Page: /crm/index.php?module=items/&action=save&id=175&token=XEYdNvF48W
#0 includes/functions/database.php(87): mysqli_query(Object(mysqli), 'select e.id , (...')
#1 plugins/ext/classes/processes/link_records_by_mysql_query.php(50): db_query('select e.id , (...', false)
#2 plugins/ext/classes/processes/processes.php(1414): link_records_by_mysql_query->process(Array, Object(choices_values))
#3 plugins/ext/classes/processes/processes.php(46): processes->run(Array, false, true)
#4 modules/items/actions/items.php(210): processes->run_after_update(175)
#5 index.php(20): require('/var/www/stumpf...')
#6 {main}

Re: Нужна подсказка проверки в поле Сущность Аякс на пустоту

Добавлено: 05 июл 2022, 16:05
alexinc
alcompstudio писал(а): 05 июл 2022, 15:58
alexinc писал(а): 05 июл 2022, 15:04 Может быть так:
id in ([5098]) and [5098] NOT NULL
тоже ошибка

Код: Выделить всё

Database Error: 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '89 NOT NULL' at line 1
Query: select e.id , ( (select ((func100.parent_item_id)) from app_entity_88 func100 where func100.id>0 and func100.id=e.parent_item_id limit 1) ) as field_5940, (e.parent_item_id) as field_5947 from app_entity_172 e where id in (84,89) and 84,89 NOT NULL
Page: /crm/index.php?module=items/&action=save&id=175&token=XEYdNvF48W
#0 includes/functions/database.php(87): mysqli_query(Object(mysqli), 'select e.id , (...')
#1 plugins/ext/classes/processes/link_records_by_mysql_query.php(50): db_query('select e.id , (...', false)
#2 plugins/ext/classes/processes/processes.php(1414): link_records_by_mysql_query->process(Array, Object(choices_values))
#3 plugins/ext/classes/processes/processes.php(46): processes->run(Array, false, true)
#4 modules/items/actions/items.php(210): processes->run_after_update(175)
#5 index.php(20): require('/var/www/stumpf...')
#6 {main}
Возможно, я ошибся с синтаксисом - IS NOT NULL

Re: Нужна подсказка проверки в поле Сущность Аякс на пустоту

Добавлено: 05 июл 2022, 17:10
alcompstudio
тоже ошибка. Я подразумеваю, что таким образом проверяется число (могу ошибаться), т.к. если в поле одно значение - то работает без ошибок, а если ставлю 2 и более, то ошибка (в ошибке такой кусок кода "...and 84,89 NOT NULL...").

84 и 89 - это значения, помещенные в поле Сущность Аякс - оно множественное, и в БД хранятся через запятую. Возможно нужен другой "синтаксис" проверки на пустоту. Вот не могу понять, какой... :(

Re: Нужна подсказка проверки в поле Сущность Аякс на пустоту

Добавлено: 05 июл 2022, 17:26
alexinc
alcompstudio писал(а): 05 июл 2022, 17:10 тоже ошибка. Я подразумеваю, что таким образом проверяется число (могу ошибаться), т.к. если в поле одно значение - то работает без ошибок, а если ставлю 2 и более, то ошибка (в ошибке такой кусок кода "...and 84,89 NOT NULL...").

84 и 89 - это значения, помещенные в поле Сущность Аякс - оно множественное, и в БД хранятся через запятую. Возможно нужен другой "синтаксис" проверки на пустоту. Вот не могу понять, какой... :(
А тип поля какой? Если текстовый или около того, то можно так попробовать:
LENGTH(TRIM([5098])) > 0

Re: Нужна подсказка проверки в поле Сущность Аякс на пустоту

Добавлено: 05 июл 2022, 19:47
alcompstudio
alexinc писал(а): 05 июл 2022, 17:26
alcompstudio писал(а): 05 июл 2022, 17:10 тоже ошибка. Я подразумеваю, что таким образом проверяется число (могу ошибаться), т.к. если в поле одно значение - то работает без ошибок, а если ставлю 2 и более, то ошибка (в ошибке такой кусок кода "...and 84,89 NOT NULL...").

84 и 89 - это значения, помещенные в поле Сущность Аякс - оно множественное, и в БД хранятся через запятую. Возможно нужен другой "синтаксис" проверки на пустоту. Вот не могу понять, какой... :(
А тип поля какой? Если текстовый или около того, то можно так попробовать:
LENGTH(TRIM([5098])) > 0
Тип поля Сущность аякс, да еще и множественный) в нем нужно проверять пустоту

Re: Нужна подсказка проверки в поле Сущность Аякс на пустоту

Добавлено: 05 июл 2022, 21:19
Antonyous99
84 и 89 - это значения, помещенные в поле Сущность Аякс - оно множественное, и в БД хранятся через запятую.
Попробуйте

Код: Выделить всё

FIND_IN_SET
Да, блин, почему нельзя просто:

Код: Выделить всё

and [5098]

Re: Нужна подсказка проверки в поле Сущность Аякс на пустоту

Добавлено: 06 июл 2022, 12:18
alcompstudio
Antonyous99 писал(а): 05 июл 2022, 21:19
84 и 89 - это значения, помещенные в поле Сущность Аякс - оно множественное, и в БД хранятся через запятую.
Попробуйте

Код: Выделить всё

FIND_IN_SET
Да, блин, почему нельзя просто:

Код: Выделить всё

and [5098]
Не получается... тоже ошибку выдает. Я уже не знаю, как включить проверку на пустоту, пробовал и так:

Код: Выделить всё

id in ([5098]) and REPLACE([5098],',','')>0

Код: Выделить всё

id in ([5098])
и

Код: Выделить всё

FIND_IN_SET(id,[5098])
работают примерно одинаково, за исключением id in ([5098]) - со всеми значениями в поле, FIND_IN_SET(id,[5098]) - почему-то только с одним значением, если 2 и более - ошибка.
И оба варианта не работают с "пустым" полем - ошибка получается.

Re: Нужна подсказка проверки в поле Сущность Аякс на пустоту

Добавлено: 06 июл 2022, 12:41
support
Попробуйте с одинарными кавычками

Код: Выделить всё

FIND_IN_SET(id,'[5098]')