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

Поле MySQL запрос по сущности со множественным выбором

Добавлено: 13 июн 2020, 00:29
alcompstudio
Добрый день!

Есть структура:

Клиенты
- Договора
Реклама


В Клиентах через поле MySQL запрос подсчитывается количество Договоров (через прямой запрос ко вложенной сущности) - в поле Количество Договоров на текущую дату. Все считает нормально.

В Клиенты подключена сущность Реклама через поле Сущность со множественным выбором. Я хочу вывести количество Договоров в зависимости от "подключенной" Рекламы к Клиентам. Т.е. через запрос в сущности Реклама подсчитать сумму по полю Количество Договоров на текущую дату (из сущности Клиенты)

Сейчас запрос так выглядит:

http://prntscr.com/syrg6t

В конфигурации сущности Клиенты:

http://prntscr.com/syriwy

Получается я вывел запрос (сумма значений) по полю, которое также имеет тип "запрос".

Ну и какой результат должен быть. Я вывел на странице записи сущности Реклама табличный список по связанному полю Клиенты

http://prntscr.com/syrjru - но почему-то не считает... Как правильно построить условие в запросе? (Если это конечно не связано с тем, что выборка идет по полю с множественным выбором, или тем, что у меня получается "запрос из запроса")

Re: Поле MySQL запрос по сущности со множественным выбором

Добавлено: 13 июн 2020, 08:20
support
Используйте find_in_set viewtopic.php?p=15213#p15213

Re: Поле MySQL запрос по сущности со множественным выбором

Добавлено: 13 июн 2020, 11:18
alcompstudio
Пробовал и это выражение, но все равно не считает ... http://prntscr.com/syxc6w

Как правильно построить? Мне ж нужно в списке значений (поле 417) выбрать/сравнить с текущим id, правильно. И при совпадении должно просуммировать такие найденные записи.

Я уже экспериментировал как только можно)

find_in_set(id,[417])
find_in_set(e.id,[417])=e.id
find_in_set(id,[417])=e.id
find_in_set(id,[417])=id
find_in_set(e.id,[417])>0
find_in_set(id,[417])>0

Все равно результат 0 выдает... Что не так ставлю. Вроде по синтаксису правильно должно быть https://oracleplsql.ru/mysql-function-find_in_set.html - тут смотрел)

Re: Поле MySQL запрос по сущности со множественным выбором

Добавлено: 13 июн 2020, 11:52
support
Достаточно

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

find_in_set(e.id,[417])
Но мне кажется вы что то не то делаете
Я хочу вывести количество Договоров
Тут нужно строит запрос к сущности Договора

Re: Поле MySQL запрос по сущности со множественным выбором

Добавлено: 13 июн 2020, 17:46
alcompstudio
Да, может я не то строю и нужно делать прямой запрос к сущности Договора. Она является подчиненной сущностью к Клиенты. А в Клиентах есть поле Сущность, где подключается Реклама.

Вот в Рекламе нужно выводить подсчет Договоров, которые созданы в Клиентах ну и соответствовали значению той самой Рекламы в Клиентах. Как создать запрос в сущности Реклама к сущности Договора? Подскажете?

http://prntscr.com/sz22rj - это структура. Я так понимаю, нужно строить подзапрос к сущности Договора, в нем через COUNT (*) считать кол-во созданных записей в Договорах?

И сразу второй вопрос, нужно по тем же Договорам подсчитать суммы из некоторых полей MySQL (в договорах).

Т.е. в первом случае нужно строить http://prntscr.com/sz25ih
а если нужно сумму по полю, то так как-то? http://prntscr.com/sz275b

Re: Поле MySQL запрос по сущности со множественным выбором

Добавлено: 14 июн 2020, 09:17
support
Т.е. в первом случае нужно строить
Да, тут вы на правильном пути.

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

SUM(select count(*) from app_entity_29 e29 where e29.parent_item_id=e.id)
а если нужно сумму по полю, то так как-то?

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

SUM(select SUM([347])  from app_entity_29 e29 where e29.parent_item_id=e.id)

Re: Поле MySQL запрос по сущности со множественным выбором

Добавлено: 14 июн 2020, 13:55
alcompstudio
что-то не получается... Нужно же в поле MySQL запрос это делать или в поле MySQL формула? а в условии что ставить?

http://prntscr.com/szg3mi

В опции Выбрать поле я поставил

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

SUM(select count(*) from app_entity_29 e29 where e29.parent_item_id=e.id)
в опции Условие

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

find_in_set(e.id,[417])
Получилась ошибка

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

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 'select count(*) from app_entity_29 e29 where e29.parent_item_id=e.id) from app_e' at line 1
Query: select e.* , (IFNULL( (select SUM(func100.field_749+0) from app_entity_45 func100 where func100.id>0 and func100.parent_item_id=e.id ) ,0)) as field_751,IFNULL((select SUM(select count(*) from app_entity_29 e29 where e29.parent_item_id=e.id) from app_entity_27 msq where find_in_set(e.id,msq.field_417) limit 1),0) as field_755 from app_entity_36 e where e.id>0 order by e.field_335 desc limit 0, 20
Page: /crm/index.php?module=items/listing

Re: Поле MySQL запрос по сущности со множественным выбором

Добавлено: 14 июн 2020, 17:35
support
в поле MySQL запрос

Re: Поле MySQL запрос по сущности со множественным выбором

Добавлено: 29 сен 2020, 20:00
aik
Чем закончилась эта эпопея с ошибкой вылетающей?

Пытаюсь нечто похожее, аналогично вылетает в error

Re: Поле MySQL запрос по сущности со множественным выбором

Добавлено: 29 сен 2020, 21:19
alcompstudio
Там пришлось строить сложный запрос с подзапросом, обращался отдельно за помощью, сам не осилил... Не все так просто оказалось, нужны знания в построении MySQL запросов.