Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Запрос insert + select + order by
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Скажу сразу, в каше я почти полный нуб(. Вопрос такой: не работает запрос Код: sql 1. выдает ошибку -25, ругается на ордер в конце инсерта. Можно ли как-то это победить? Версия каше 2008.1.5.Х. Вообще изначально хотелось отсортировать данные в таблице - скопировать туда отсортированные, затем удалить несортированные. Может есть более простой способ сортировки данных в таблице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2012, 16:31 |
|
||
|
Запрос insert + select + order by
|
|||
|---|---|---|---|
|
#18+
I love cche, Вы нуб не только в каше :-) Уберите сортировку из запроса, такого понятия, как сортировка таблицы нет. Сортировка используется только при выводе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2012, 16:57 |
|
||
|
Запрос insert + select + order by
|
|||
|---|---|---|---|
|
#18+
Блок А.Н., Это как раз и есть сортировка при выводе. Данные выбираются во временную таблицу, а затем выводятся на печать с помощью одной шарлатанской программы. Её особенность в том, что на входе она получает таблицу в определенном виде, и в этом самом виде выводит в формат пдф. Всю эту систему разрабатывал не я, поэтому ничего изменить не могу(У меня вообще очень много вопросов к разработчику всего этого добра). Так что все-таки лучше вернуться к тому, как можно отсортировать таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2012, 17:10 |
|
||
|
Запрос insert + select + order by
|
|||
|---|---|---|---|
|
#18+
Проблема решена 8) Спасибо за помощь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2012, 17:46 |
|
||
|
Запрос insert + select + order by
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Уберите сортировку из запроса, такого понятия, как сортировка таблицы нет.В версии 2012.2 запрос вполне работоспособен даже без TOP x . Support INSERT ... SELECT TOP N ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2012, 20:29 |
|
||
|
Запрос insert + select + order by
|
|||
|---|---|---|---|
|
#18+
I love ccheПроблема решена 8) Спасибо за помощь Как решили? Почему не можете изменить, в программе нет исходников? Почему у вас инсерт идет в ту же таблицу, откуда селект? Это не ошибка, просто очень странно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2012, 20:57 |
|
||
|
Запрос insert + select + order by
|
|||
|---|---|---|---|
|
#18+
servitВ версии 2012.2 запрос вполне работоспособен даже без TOP x . Support INSERT ... SELECT TOP N Вопрос-то был про order by, а не TOP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2012, 11:54 |
|
||
|
Запрос insert + select + order by
|
|||
|---|---|---|---|
|
#18+
Если верить док-ии, ORDER BY в подзапросе SELECT работоспособен без TOP и в более ранних версиях (у меня 2011.1.4). Но без TOP смысла в сортировке, даже если она и работает, особого нет. Разве что заставить подзапрос использовать подходящий индекс, но на простых запросах оптимизатор с этой задачей и так прекрасно справляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2012, 12:52 |
|
||
|
Запрос insert + select + order by
|
|||
|---|---|---|---|
|
#18+
bushmenВопрос-то был про order by, а не TOPВ рамках контекста ответ верный. Alexey MaslovЕсли верить док-ии, ORDER BY в подзапросе SELECT работоспособен без TOP и в более ранних версиях (у меня 2011.1.4).Почему бы запросу не работать в версии 2011.1.4? Согласно документации было два улучшения: Use Of TOP and ORDER In Subqueries (2010.1) Support INSERT ... SELECT TOP N (2009.1) Или Вы нашли в документации упоминание про возможность использования ORDER BY без TOP? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2012, 13:32 |
|
||
|
Запрос insert + select + order by
|
|||
|---|---|---|---|
|
#18+
servitИли Вы нашли в документации упоминание про возможность использования ORDER BY без TOP?Нет, я ошибочно понял Ваше упоминание версии 2012.2 как намёк на некое улучшение )) Никогда не пользовался такими INSERT'ами, и, к стыду своему, даже не подозревал об их существовании. Полезное применение им придумать непросто, 1-ое что приходит в голову: автозаполнение таблицы тестовыми - но близкими к реальным - данными, размножая имеющиеся записи, а потом модифицируя в них некоторые поля. Но как-то задумчиво получается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2012, 14:07 |
|
||
|
Запрос insert + select + order by
|
|||
|---|---|---|---|
|
#18+
servitИли Вы нашли в документации упоминание про возможность использования ORDER BY без TOP? Я имел в виду, что вопрос был о выборки ВСЕЙ таблицы. А в этом случает я склоняюсь к Alexey Maslov Но без TOP смысла в сортировке, даже если она и работает, особого нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2012, 14:08 |
|
||
|
Запрос insert + select + order by
|
|||
|---|---|---|---|
|
#18+
bushmenЯ имел в виду, что вопрос был о выборки ВСЕЙ таблицы.Есть таблица A IDf1f2134213 Нужно получить таблицу B IDf1f2113234 Согласно документации правильней было бы написать: insert into aaaa."Table" (f1, f2) select TOP ALL f1, f2 from aaaa."Table" order by f1 Тем не менее запрос отработал и без TOP ALL, о чём и было сказано. Что касается самого запроса (таблица назначения = таблица источник), то полагаю это был пример. Иначе ТС заключил бы имя таблицы в кавычки, так как "Table" - зарезервированное слово и запрос не прошёл бы проверку парсера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2012, 16:02 |
|
||
|
Запрос insert + select + order by
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.I love ccheПроблема решена 8) Спасибо за помощь Как решили? Почему не можете изменить, в программе нет исходников? Почему у вас инсерт идет в ту же таблицу, откуда селект? Это не ошибка, просто очень странно. Печать осуществляется с помощью сервиса (сырцов его нет, неизвестно, что и как в точности он делает), не буду вдаваться в подробности, там одним словом придумана очень жесткая копроаппендэктомия... Переделавать эту дьявольскую систему печати = переделать весь проект заново, заказчик это не станет оплачивать. Его устраивает, что отчеты хоть как-то выдаются. Инсерт идет в ту же таблицу потому, что как я уже говорил, формируется таблица, которая собственно и печатается. Решил с помощью копипасты - в другом отчете было похожее решение, только слишком хардкорное для меня - класс выбирал нужные данные (несортированные) сам в себя, затем сам из себя выбирал их в %РезултСет, сортируя с помощью order by, дальше в цикле перебирал этот отсортированный %РезултСет. Содержимое цикла: класс получает Ид строки из %РезултСета, находит в себе строку с таким Ид, и в специальное поле ставит параметр цикла. Затем в конце всей этой ботвы выполняется сортировка по этому специальному полю. (Смысл всего этого в том, что необходимо отсортировать по заранее неизвестному полю). Class SomeClass { Property F1 As %String; Property F2 As %String; Property SortFlag As %Integer; Method Report(sortCol = "", sortOrder = "") As %Status { set qF1 = "sdfsdfsdf" set qF2 = "sdgdsfsdfsdf" // Вставка для примера, реально там довольно сложный алгоритм выбора значений for i = 1:1:5 { &sql( insert into SomeClass set F1 = :qF1, F2 = :qF2 ) } // end if // Практически вся пунктуация автора цинично сохранена if (sortCol'="") { set qry = "SELECT ID FROM SomeClass ORDER BY " _ sortCol _ " " _ sortOrder set ResultSet=##class(%ResultSet).%New() set ResultSet.RuntimeMode=2 do ResultSet.Prepare(qry) do ResultSet.Execute() set i=0 while (ResultSet.Next()) { #DIM sc AS SomeClass set sc=##class(SomeClass).%OpenId(ResultSet.GetData(1)) // Вот она, та самая сортирока. Правда гениально? set sc.SortFlag = i do sc.Save() set i=i+1 } // end while } // end if quit $$$OK } // end Report() } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 06:53 |
|
||
|
Запрос insert + select + order by
|
|||
|---|---|---|---|
|
#18+
servitbushmenЯ имел в виду, что вопрос был о выборки ВСЕЙ таблицы.Есть таблица A IDf1f2134213 Нужно получить таблицу B IDf1f2113234 Согласно документации правильней было бы написать: insert into aaaa."Table" (f1, f2) select TOP ALL f1, f2 from aaaa."Table" order by f1 Тем не менее запрос отработал и без TOP ALL, о чём и было сказано. Что касается самого запроса (таблица назначения = таблица источник), то полагаю это был пример. Иначе ТС заключил бы имя таблицы в кавычки, так как "Table" - зарезервированное слово и запрос не прошёл бы проверку парсера. У меня каше 2008.1.5 Запрос: insert into test (test_id, test_name) select top all test_id, test_name from test order by test_id Результат: ОШИБКА #5001: 1: SQL ERROR #1: LITERAL ('ALL') expected, ALL found^ INSERT INTO test ( test_id , test_name ) SELECT TOP ALL action = (parse) rtn = () $ze = (<SYNTAX>errdone+2^%qaqqt) err = (qaqperr) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 07:00 |
|
||
|
Запрос insert + select + order by
|
|||
|---|---|---|---|
|
#18+
I love ccheУ меня каше 2008.1.5 Запрос: insert into test (test_id, test_name) select top all test_id, test_name from test order by test_id Результат: ОШИБКА #5001: 1: SQL ERROR #1: LITERAL ('ALL') expected, ALL found^ INSERT INTO test ( test_id , test_name ) SELECT TOP ALL action = (parse) rtn = () $ze = (<SYNTAX>errdone+2^%qaqqt) err = (qaqperr)Да, я видел Вашу версию Caché ещё в первом сообщении. Выше я указал версии СУБД, в которых появились соответствующие возможности. Решили перепроверить? PS: обычно при ответе я указываю контекст вопроса и кому он предназначен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 09:14 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=37728747&tid=1557500]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
47ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
| others: | 214ms |
| total: | 339ms |

| 0 / 0 |
