Сложный запрос.
Добавлено: 11 июн 2020, 14:37
При помощи одного форумчанина мы создали таблицу view . Работает как часы.
CREATE VIEW `app_entity_133` AS select
`ap91`.`id` AS `id`,
`ap91`.`date_added` AS `date_added`,
`ap91`.`date_updated` AS `date_updated`,
`ap91`.`created_by` AS `created_by`,
`ap91`.`field_813` AS `field_1281`,
sum(`ap94`.`field_852` * `ap94`.`field_853`) AS `field_1282`,
sum(`ap96`.`field_877` * `ap96`.`field_878`) AS `field_1283`,
COALESCE((0-sum(`ap94`.`field_852` * `ap94`.`field_853`)),0)+COALESCE((0+sum(`ap96`.`field_877` * `ap96`.`field_878`)),0) AS `field_1284`
from ((((`app_entity_91` `ap91` left join `app_entity_93` `ap93` on(`ap91`.`id` = `ap93`.`field_840`)) left join `app_entity_95` `ap95` on(`ap91`.`id` = `ap95`.`field_866`)) left join `app_entity_94` `ap94` on(`ap94`.`parent_item_id` = `ap93`.`id`)) left join `app_entity_96` `ap96` on(`ap96`.`parent_item_id` = `ap95`.`id`)) where `ap94`.`field_852` > 0 or `ap96`.`field_877` > 0 group by `ap91`.`id`,`ap91`.`date_added`,`ap91`.`date_updated`,`ap91`.`created_by`,`ap91`.`field_813`;SELECT * FROM `app_entity_133_old` WHERE 1
Теперь же, нужно в поле `field_1282`, добавить сумму другого поля другой таблицы (сейчас он считает сумму определенных полей определенной таблицы-а надо чтобы еще с нескольких таблиц подтягивал значения).
так же с полем `field_1283` ...
Попытался сделать так:
CREATE VIEW `app_entity_133` AS select
`ap91`.`id` AS `id`,
`ap91`.`date_added` AS `date_added`,
`ap91`.`date_updated` AS `date_updated`,
`ap91`.`created_by` AS `created_by`,
`ap91`.`field_813` AS `field_1281`,
sum(`ap94`.`field_852` * `ap94`.`field_853`)+sum(`ap135`.`field_1333`) AS `field_1282`,
sum(`ap96`.`field_877` * `ap96`.`field_878`)+sum(`ap135`.`field_1334`) AS `field_1283`,
COALESCE((0-sum(`ap94`.`field_852` * `ap94`.`field_853`)),0)+COALESCE((0+sum(`ap96`.`field_877` * `ap96`.`field_878`)),0) AS `field_1284`
from (((((`app_entity_91` `ap91` left join `app_entity_93` `ap93` on(`ap91`.`id` = `ap93`.`field_840`)) left join `app_entity_95` `ap95` on(`ap91`.`id` = `ap95`.`field_866`)) left join `app_entity_135` `ap135` on(`ap91`.`id` = `ap135`.`field_1297`)) left join `app_entity_94` `ap94` on(`ap94`.`parent_item_id` = `ap93`.`id`)) left join `app_entity_96` `ap96` on(`ap96`.`parent_item_id` = `ap95`.`id`)) where `ap94`.`field_852` > 0 or `ap96`.`field_877` > 0 or `ap135`.`field_1333` > 0 or `ap135`.`field_1334` > 0 group by `ap91`.`id`,`ap91`.`date_added`,`ap91`.`date_updated`,`ap91`.`created_by`,`ap91`.`field_813`;SELECT * FROM `app_entity_133_old` WHERE 1
не получилось... вообще непонятные суммы считает. хотя я всего лишь добавил поля которые надо "досчитать"
Это может быть связано с тем что ap93 и ap94 сушности с подсущностями... а ap135 сущность без подсущностей.
CREATE VIEW `app_entity_133` AS select
`ap91`.`id` AS `id`,
`ap91`.`date_added` AS `date_added`,
`ap91`.`date_updated` AS `date_updated`,
`ap91`.`created_by` AS `created_by`,
`ap91`.`field_813` AS `field_1281`,
sum(`ap94`.`field_852` * `ap94`.`field_853`) AS `field_1282`,
sum(`ap96`.`field_877` * `ap96`.`field_878`) AS `field_1283`,
COALESCE((0-sum(`ap94`.`field_852` * `ap94`.`field_853`)),0)+COALESCE((0+sum(`ap96`.`field_877` * `ap96`.`field_878`)),0) AS `field_1284`
from ((((`app_entity_91` `ap91` left join `app_entity_93` `ap93` on(`ap91`.`id` = `ap93`.`field_840`)) left join `app_entity_95` `ap95` on(`ap91`.`id` = `ap95`.`field_866`)) left join `app_entity_94` `ap94` on(`ap94`.`parent_item_id` = `ap93`.`id`)) left join `app_entity_96` `ap96` on(`ap96`.`parent_item_id` = `ap95`.`id`)) where `ap94`.`field_852` > 0 or `ap96`.`field_877` > 0 group by `ap91`.`id`,`ap91`.`date_added`,`ap91`.`date_updated`,`ap91`.`created_by`,`ap91`.`field_813`;SELECT * FROM `app_entity_133_old` WHERE 1
Теперь же, нужно в поле `field_1282`, добавить сумму другого поля другой таблицы (сейчас он считает сумму определенных полей определенной таблицы-а надо чтобы еще с нескольких таблиц подтягивал значения).
так же с полем `field_1283` ...
Попытался сделать так:
CREATE VIEW `app_entity_133` AS select
`ap91`.`id` AS `id`,
`ap91`.`date_added` AS `date_added`,
`ap91`.`date_updated` AS `date_updated`,
`ap91`.`created_by` AS `created_by`,
`ap91`.`field_813` AS `field_1281`,
sum(`ap94`.`field_852` * `ap94`.`field_853`)+sum(`ap135`.`field_1333`) AS `field_1282`,
sum(`ap96`.`field_877` * `ap96`.`field_878`)+sum(`ap135`.`field_1334`) AS `field_1283`,
COALESCE((0-sum(`ap94`.`field_852` * `ap94`.`field_853`)),0)+COALESCE((0+sum(`ap96`.`field_877` * `ap96`.`field_878`)),0) AS `field_1284`
from (((((`app_entity_91` `ap91` left join `app_entity_93` `ap93` on(`ap91`.`id` = `ap93`.`field_840`)) left join `app_entity_95` `ap95` on(`ap91`.`id` = `ap95`.`field_866`)) left join `app_entity_135` `ap135` on(`ap91`.`id` = `ap135`.`field_1297`)) left join `app_entity_94` `ap94` on(`ap94`.`parent_item_id` = `ap93`.`id`)) left join `app_entity_96` `ap96` on(`ap96`.`parent_item_id` = `ap95`.`id`)) where `ap94`.`field_852` > 0 or `ap96`.`field_877` > 0 or `ap135`.`field_1333` > 0 or `ap135`.`field_1334` > 0 group by `ap91`.`id`,`ap91`.`date_added`,`ap91`.`date_updated`,`ap91`.`created_by`,`ap91`.`field_813`;SELECT * FROM `app_entity_133_old` WHERE 1
не получилось... вообще непонятные суммы считает. хотя я всего лишь добавил поля которые надо "досчитать"
Это может быть связано с тем что ap93 и ap94 сушности с подсущностями... а ap135 сущность без подсущностей.