Страница 1 из 2
Статическое, обновляемое числовое поле?
Добавлено: 18 мар 2020, 14:30
meu3
В процессе построения своей системы учета возник вопрос по получению в некоей сущности,
скажем "Опт"
содержащей информацию об оптовых покупателях (контакты, адреса, условия работы),
данных из сущности "Продажи"
содержащих собственно продажи
в которых "Опт" присутствует в виде поля типа "сущность".
Проблема в том, что в "Продажах" итоговая сумма высчитывается с помощью всех доступных инструментов (функции, js, MySQL), что в итоге приводит к проблемам при вычислении итогового MySQL запроса для сущности "Опт". Что-то там, "у ей внутре", неправильно отрабатывает из-за разносортности данных и разности сущностей.
Вопрос 1: кто сталкивался с этим зоопарком и как решал проблему?
Вопрос 2: может из=за этих несовместимостей нужен новый, промежуточный тип поля, которое бы хранило результаты предыдущих вычислений? Наподобие "Статического текста по шаблону", только числовое? И чтобы обновлялось при изменении связанных с ним записей?
Или заморочиться и из "Статического текста по шаблону" получить число?
Re: Статическое, обновляемое числовое поле?
Добавлено: 19 мар 2020, 13:12
meu3
"А что нам скажет начальник транспортного цеха?"
Уважаемый разработчик, может подскажете, как сделать поле
аккумулятор вычислений в связи с некоторой несовместимостью при переносе данных между сущностями через запросы?
Re: Статическое, обновляемое числовое поле?
Добавлено: 19 мар 2020, 13:36
support
Может проще разобраться что ни так с MySQL запросом?
Re: Статическое, обновляемое числовое поле?
Добавлено: 19 мар 2020, 13:53
meu3
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 '16})) from app_entity_26 msq where e.id=msq.field_2011 limit 1),0) as field_2010' at line 1
Re: Статическое, обновляемое числовое поле?
Добавлено: 19 мар 2020, 14:31
meu3
В своих сущностях - все работает. А вот при попытке спросить из другой - проблема. Поле - аккумулятор могло бы решить вопрос.
Код: Выделить всё
SELECT e.* ,
(
(SELECT SUM(((if(
(SELECT SUM(func99.field_1944+0)
FROM app_entity_122 func99
WHERE func99.id>0
AND func99.parent_item_id=func100.id ) ,
(SELECT SUM(func99.field_1944+0)
FROM app_entity_122 func99
WHERE func99.id>0
AND func99.parent_item_id=func100.id ) ,0))-((
(SELECT SUM(func99.field_1932+0)
FROM app_entity_121 func99
WHERE func99.id>0
AND func99.parent_item_id=func100.id ) )+func100.field_1934-func100.field_2002))+0)
FROM app_entity_120 func100
WHERE func100.id>0
AND func100.parent_item_id=e.id ) ) AS field_1951, (
(SELECT SUM(func100.field_1944+0)
FROM app_entity_122 func100
WHERE func100.id>0
AND func100.parent_item_id IN
(SELECT func_120.id
FROM app_entity_120 func_120
WHERE func_120.parent_item_id IN (e.id))) ) AS field_2009,IFNULL(
(SELECT ({16})
FROM app_entity_26 msq
WHERE e.id=msq.field_2011 limit 1),0) AS field_2010
FROM app_entity_118 e
WHERE e.id>0
ORDER BY e.field_1894 ASC limit 0, 30
Re: Статическое, обновляемое числовое поле?
Добавлено: 20 мар 2020, 12:35
meu3
support писал(а): 19 мар 2020, 13:36
Может проще разобраться что ни так с MySQL запросом?
Не понятно как можно разобраться с запросом без отладки.
Подозреваю, что во всем виноват запуск функции для сущности №2 из сущности №1. Но как увидеть результат выполнения запроса и функции - не представляю

Re: Статическое, обновляемое числовое поле?
Добавлено: 23 мар 2020, 22:19
meu3
support писал(а): 19 мар 2020, 13:36
Может проще разобраться что ни так с MySQL запросом?
Может быть уважаемый

разработчик намекнет как?
Насколько я понимаю - это системная проблема. Ошибка происходит в точке вызова функции, которая не относится к сущности ее вызывающей.
Re: Статическое, обновляемое числовое поле?
Добавлено: 24 мар 2020, 07:17
support
Не запускается функция {16}, она не вставляется в запрос. Что это за функция?
Re: Статическое, обновляемое числовое поле?
Добавлено: 24 мар 2020, 09:17
meu3
Сумма стоимости товара в заказе покупателя
SUM(стоимость товара)
Re: Статическое, обновляемое числовое поле?
Добавлено: 24 мар 2020, 12:29
support
Пока нет идей в чем причина.