Мне было интересно, как Axapta переводит его операторов SQL и наткнулся на это: how-joins-in-x-select-statement-are-translated-into-t-sqlMicrosoft Dynamics AX SQL JOIN Перевод
Это первый пример, приведенный на сайте.
РЕГИСТРИРУЙТЕСЬ в X ++:
select AccountNum from custTable
join TaxGroupId from custGroup
where custGroup.CustGroup == custTable.CustGroup;
CROSS JOIN в T-SQL:
SELECT T1.ACCOUNTNUM, T1.RECID, T2.TAXGROUPID, T2.RECID
FROM CUSTTABLE T1 CROSS JOIN CUSTGROUP T2
WHERE ((T1.PARTITION=?) AND (T1.DATAAREAID=?))
AND (((T2.PARTITION=?) AND (T2.DATAAREAID=?))
AND (T2.CUSTGROUP=T1.CUSTGROUP))
Я теперь интересно, что означает знак вопроса в этом заявлении. ?
отмечен как ошибка из-за неправильного синтаксиса.
Что означает WHERE ((T1.PARTITION=?) AND (T1.DATAAREAID=?))
?
, что о таких областях, как TAXGROUPID или что-то подобное. Это не системное поле, но в последнем примере на странице он также используется с =? , Это потому, что он находится в подзапросе и тоже там заменен? – Bongo
Это также местозаполнитель, который будет заменен на «Std» в этом примере. Таким образом, SQL-сервер получает параметризованный запрос (который показан в блоге) и значения параметров, которые будут варьироваться в зависимости от контекста. –