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

MySQL запрос в подсущность

Добавлено: 15 фев 2023, 10:17
guitar-craft
База построена следующим образом:
Паспорт
- Учреждение
-- Здание
--- Замечания

В паспорте одна строка - год, например 2023. В них заносятся данные по учреждению, наименования и тд. У каждого учреждения есть здания, на каждое здание выдаются замечания.

Где можно посмотреть пример запроса или подсказать как его сделать (или может это можно реализовать по другому), чтобы в подсущности Учреждение считалось количество замечаний? Выборка должна проходить по Учреждению, т.е например у учреждения 3 здания, в одном 1 замечание, в другом 5, в другом 2 - итого 8.

Re: MySQL запрос в подсущность

Добавлено: 15 фев 2023, 10:42
support
Попробуйте функции из Дополнения https://docs.rukovoditel.net.ru/index.php?p=48
Функции - то тот же самый mysql запрос, просто он строится автоматически с учетом родителей.

Re: MySQL запрос в подсущность

Добавлено: 15 фев 2023, 13:43
guitar-craft
Спасибо за подсказку, разобрался, все отлично получилось

Re: MySQL запрос в подсущность

Добавлено: 16 фев 2023, 06:26
guitar-craft
Я дико извиняюсь, но можете еще подсказать как получить список записей из Замечаний в Учреждения?
Я пытаюсь сделать через вложенный запрос и то ошибка, то вообще ничего. Пример бы

Re: MySQL запрос в подсущность

Добавлено: 16 фев 2023, 07:38
nruslan2

Re: MySQL запрос в подсущность

Добавлено: 16 фев 2023, 09:58
guitar-craft
Сделал по списку записей MySQL запросу

e.parent_item_id in (select id from app_entity_38 where [432]='false')

Но записи во всех строках выводятся одинаковые. Что нужно сделать чтобы в каждой записи выводились только связанные с ней?

Re: MySQL запрос в подсущность

Добавлено: 19 фев 2023, 13:46
guitar-craft
Умоляю все высшие силы - помогите :D

Re: MySQL запрос в подсущность

Добавлено: 19 фев 2023, 14:05
nruslan2
попробуйте не через IN, а FIND_IN_SET

Re: MySQL запрос в подсущность

Добавлено: 20 фев 2023, 02:16
guitar-craft
FIND_IN_SET - e.parent_item_id find_in_set (select id from app_entity_38 where [432]='false')

Выдает ошибку

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 'find_in_set (select id from app_entity_38 where e.field_432='false')' at line 1
Query: select e.* from app_entity_43 e where e.parent_item_id find_in_set (select id from app_entity_38 where e.field_432='false')
Page: /ic/tp/index.php?module=items/listing
#0 includes/functions/database.php(87): mysqli_query(Object(mysqli), 'select e.* fro...')
#1 includes/classes/fieldstypes/fieldtype_items_by_query.php(93): db_query('select e.* fro...')
#2 includes/classes/fields_types.php(998): fieldtype_items_by_query->output(Array)
#3 modules/items/components/_listing_list.php(167): fields_types::output(Array)
#4 modules/items/actions/listing.php(188): require('/var/www/u18858...')
#5 index.php(20): require('/var/www/u18858...')
#6 {main}

FIND_IN_SET() же функция, используемая для нахождения позиции строки в списке строк.

Re: MySQL запрос в подсущность

Добавлено: 20 фев 2023, 07:01
guitar-craft
Давайте я заплачу за правильный SQL запрос раз такое дело