Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2009, 19:27   #1
МишаК
Новичок
Джуниор
 
Регистрация: 30.05.2007
Сообщений: 2
По умолчанию Подскажите как поправить SQL запрос

Приветствую всех.
Помогите, пожалуйста, решить такую задачу.
Существует две таблицы: одна заполненная, другая пустая.
Мне необходимо заполнить пустую таблицу данными из первой таблицы, причем эти данные должны добавляться в упорядоченном виде.
Я сформировал запрос такой
INSERT INTO TТаблицаПустая (Поле1, Поле2, Поле3) SELECT Поле_1, Поле_2, SUM(Поле_3) FROM TТаблицаПолная WHERE Условие GROUP BY Поле_1, Поле_2

Пробовал в конце строки запроса подставить ORDER BY, вылазит ошибка, почитал, понял, что ORDER BY здесь употреблять нельзя.
Что делать?
Спасибо.
МишаК вне форума Ответить с цитированием
Старый 12.07.2009, 20:01   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

встречный вопрос: а зачем данные сортировать при вставке?
в любом случае, сортировка важна только при отображении данных
если схема спроектирована грамотно, то такие танцы с бубнами не нужны

но если уж очень захотелось, то, например, в ИБ/ФБ такое можно реализовать с помощью ХП (хранимой процедуры), в оракле - с помощью реф_курсоров + бубны
soleil@mmc вне форума Ответить с цитированием
Старый 16.07.2009, 15:33   #3
Шульц
Форумчанин
 
Регистрация: 14.09.2008
Сообщений: 172
По умолчанию

Я бы делал через цикл, не знаю на сколько это будет быстро зависит от количества записей Просто счначало выбираешь всю таблицу с сортировкой по нужному полю, затем запускаешь цикл длиной в количество записей, в каждом шаге вставляешь новую строку и листаешь дальше.
Код напишешь, будет работать, но если записей очень много будет тормозить ашо пипец
Шипулин А. В.
Шульц вне форума Ответить с цитированием
Старый 16.07.2009, 16:22   #4
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
Существует две таблицы: одна заполненная, другая пустая.
Мне необходимо заполнить пустую таблицу данными из первой таблицы, причем эти данные должны добавляться в упорядоченном виде.
Данный запрос копирует все записи из таблицы Table1 в таблицу Table2, сортируя их по полям Field1 и Field2.
Код:
INSERT INTO Table2 (Field1, Field2, Field3) SELECT Field1, Field2, Field3 FROM Table1 ORDER BY Field1, Field2
Можно и с WHERE:
Код:
INSERT INTO Table2 (Field1, Field2, Field3) SELECT Field1, Field2, Field3 FROM Table1 WHERE Field1 < 3 ORDER BY Field1, Field2
P.S.
GROUP BY — используется для объединения строк с общими значениями в элементы меньшего набора строк.
ORDER BY — используется для определения, какие столбцы используются для сортировки результирующего набора данных.
P.S.2
Если нужны немного другие действия, то опешите их подробнее.
Зачем считать сумму: SUM(Поле_3)?
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".

Последний раз редактировалось Daramant; 16.07.2009 в 16:24.
Daramant вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL-запрос oblachko БД в Delphi 6 26.06.2009 20:34
Как выполнить SQL запрос, записанный в Memo artemavd БД в Delphi 8 26.03.2009 17:41
помогите поправить запрос на выборку в дельфи Барби Помощь студентам 1 13.10.2008 11:35
как составит запрос SQL bmb_66 БД в Delphi 2 11.03.2008 08:46
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15