megafax
@megafax
web-программист

Как добавить в JOIN подзапрос?

Вопрос состоит в том, чтобы на чистом BITRIX ORM сделать JOIN с подзапросом, не используя RAW запросы

т.е. получиться должно в результате что то такое:

SELECT 
	`ID`,
	`LOGIN`,
	IFNULL(`sub`.`CNT`, 0) AS `CNT`
FROM `b_user`
LEFT JOIN (SELECT `UF_FIELD`, COUNT(*) AS `CNT` FROM `sub` GROUP BY `UF_FIELD`) `sub` ON `b_user`.`ID` = `sub`.`UF_FIELD`
GROUP BY `b_user`.`ID`, `b_user`.`LOGIN`
  • Вопрос задан
  • 1296 просмотров
Решения вопроса 1
gromdron
@gromdron
Работаю с Bitrix24
Насколько мне известно, подобный запрос в 1 в битриксе не завернуть (минимум 2 независимых запроса).
Дело в том, что Битрикс работает с entities, и у него нет queryBuilder'а, соответственно он может строить запросы только к известным сущностям.
А далее начинается пляска, потому как часть запроса с IFNULL является ExpressionField, а join является ReferenceField и выражение expression нельзя применить для результата reference.

У Вас будет ошибка:
Expected ScalarField or ExpressionField in `*` build_from, but `Bitrix\Main\Entity\ReferenceField:*` was given. (0)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы