|
![]() |
#1 |
MCTS
|
кстати, payTrans.amount действительно используется далее, но какая это запись данной таблицы?
|
|
![]() |
#2 |
Программатор
|
|
|
![]() |
#3 |
MCTS
|
|
|
![]() |
#4 |
Moderator
|
Eldar9x, мне примерно понятно ваше недоумение. Я сам через это проходил.
Недоумение возникает из-за того, что глядя на конструкцию: select sum(amount) from payTrans where... человек, знакомый с "нормальным" SQL (и пока не очень знакомый с "аксаптовским"), понимает, что "нормальный" SQL предъявит в качестве результата такого запроса "сумму поля amount из таблицы payTrans по тем записям, которые отбираются условием where...". Причем в контексте конкретной процедуры (метода) возникает естественный вопрос: "А где же оператор присваивания? Чему это полученное значение присваивается?" На "аксаптовском SQL", а точнее на X++, вышеупомянутая конструкция означает, что "результат запроса на нормальном SQL" будет помещен в поле amount табличной переменной payTrans. Т.е. на некотором псевдокоде можно записать примерно так: payTrans.amount = (select sum(amount) from RPayTrans where ... ) Это просто нужно немножко переварить и прочувствовать (рюмка хорошего коньяка будет нелишней!). ![]() |
|
|
За это сообщение автора поблагодарили: Eldar9x (1). |
![]() |
#5 |
MCTS
|
Вот вот, мне тоже вначале хотелось увидеть что нибудь типа
blablabla = (select sum(amount) from RPayTrans where ... ), где blablabla, какая то переменная... ![]() |
|
![]() |
#6 |
Member
|
Цитата:
Сообщение от Gustav
...
select sum(amount) from payTrans where... человек, знакомый с "нормальным" SQL ...
__________________
С уважением, glibs® |
|
![]() |
#7 |
Moderator
|
Цитата:
Вот, не мудрствуя, скопировал из хелпа по T-SQL кусочек примера с курсором: Код: DECLARE @au_id varchar(11), @au_fname varchar(20), @au_lname varchar(40) DECLARE authors_cursor CURSOR FOR SELECT au_id, au_fname, au_lname FROM authors WHERE state = "UT" ORDER BY au_id OPEN authors_cursor FETCH NEXT FROM authors_cursor INTO @au_id, @au_fname, @au_lname Код: ОБЪЯВЛЯЕМ наши_переменные ОБЪЯВЛЯЕМ наш_курсор КАК КУРСОР ДЛЯ SELECT... (причем SELECT - на нормальном SQL!) ОТКРЫВАЕМ наш_курсор СЧИТЫВАЕМ ОЧЕРЕДНУЮ (запись) ИЗ наш_курсор В наши_переменные А здесь что? select sum(amount) from payTrans - ВЫБИРАЕМ СУММУ(amount) ИЗ... ВЫБИРАЕМ - ИЗ, ВЫБИРАЕМ - ИЗ. Ну, ИЗ-то выбираем, а ВО ЧТО выбираем-то? Вот и возникают непонятки. По-моему, вполне обоснованные. У меня знакомство с подобного рода "проблемой" началось со встречи с примерно таким фрагментом: select count(RecId) from RAssetTable Уже к тому времени зная ответственно-почётную миссию идентификатора RecId во всей системе, мозг упорно отказывался понимать, что в этом фрагменте RecId является как бы не "самим собой", а содержит всего-навсего количество записей в конкретной таблице. Согласитесь, для "неокрепшего мозга", это немного башне-сносящая откровенность. "Мы понимаем, что мы чего-то не понимаем..." ![]() |
|
![]() |
#8 |
Участник
|
Странно, но имея довольно богатый опыт работы с T-SQL у меня лично не возникло проблем в "догонянии" что делает select count(RecId) from RAssetTable
Не помню, чтобы заморачивался. Просто если вы в T-SQL пишете PHP код:
Вот потому, наверное, и сделано так - чтобы не делать "виртуальных" динамически создающихся dataset'ов... Хотя, конечно, мне, как разработчику, жутко не хватает конструкций типа такой: PHP код:
Но, тем не менее, embedded SQL и табличные переменные X++ RULEZzz! ![]() |
|
![]() |
#9 |
Участник
|
Please note, that the results will always be returned in the table variable. If you use a field list in the select statement, only those fields will be available in the table variable. If you use aggregate functions such as sum or count, the sums or counts are returned in the fields you perform the sum or count over. This also means that you cannot count average or sum date-fields as the result is not a date.
__________________
любитель портвейна и снов с прокисшей капустой в усах |
|
|
За это сообщение автора поблагодарили: RVS (1), Eldar9x (1). |
![]() |
#10 |
Сенбернар
|
Переведу : Eldar9x, в Вашем случае - это НИКАКАЯ запись. Это ПЕРЕМЕННАЯ типа "запись таблицы" payTrans, ЕДИНСТВЕННОЕ поле которой имеет осмысленное значение. В этом поле сидит СУММА, которую Вы заказывали.
Вот. ЗЫ : Опять CAPS LOCK заедать начал ![]()
__________________
Best Regards, Roman |
|
|
За это сообщение автора поблагодарили: Eldar9x (1). |
Теги |
amount, запрос (query), как правильно |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|