Есть два инфоблока с данными, будь это таблицы сделал бы left join по id и все было бы ок. С инфоблоками такое можно делать? ...иначе приходится выбирать данные из одного инфоблока, потом из второго и потом их еще сопоставлять.
Судя по документации, "джойнить инфоблоки" можно. Это происходит внутри функции GetList
PROPERTY_<PROPERTY_CODE>.<FIELD> - фильтр по значениям полей связанных элементов. , где PROPERTY_CODE - ID или мнемонический код свойства привязки, а FIELD - поле указанного в привязке элемента. FIELD может принимать следующие значения: ACTIVE, DETAIL_TEXT_TYPE, PREVIEW_TEXT_TYPE, EXTERNAL_ID, NAME, XML_ID, TMP_ID, DETAIL_TEXT, SEARCHABLE_CONTENT, PREVIEW_TEXT, CODE, TAGS, WF_COMMENTS, ID, SHOW_COUNTER, WF_PARENT_ELEMENT_ID, WF_STATUS_ID, SORT, CREATED_BY, PREVIEW_PICTURE, DETAIL_PICTURE, IBLOCK_ID, TIMESTAMP_X, DATE_CREATE, SHOW_COUNTER_START, DATE_ACTIVE_FROM, DATE_ACTIVE_TO, ACTIVE_FROM, ACTIVE_TO, ACTIVE_DATE, DATE_MODIFY_FROM, DATE_MODIFY_TO, MODIFIED_USER_ID, MODIFIED_BY, CREATED_USER_ID, CREATED_BY. Правила фильтров идентичны тем, которые описаны выше.
Другое дело, что лишний джойн может сказаться на производительности, и это проблема проектирования. Проверьте, что быстрее: один GetList или два, как сейчас.
Хотя, честно, не проверял, что и как там джойнится. Вообще элементы инфоблоков это одна большая-большая таблица на все инфоблоки.