full_lamer |
Отправлено: 13.05.2004, 22:13 |
|
Машинист паровоза
Группа: Участник
Сообщений: 225
|
Доброго времени!
У меня вопрос на засыпку: как можно сделать такой запрос, который смог бы сгрузить 20 полей таблицы в таблицу с 1 полем... Я просто плохо могу объяснять лучше изображу:
Исходная таблица:
F1 F2 F3
11 21 31
12 22 32
Необходимо получить следующее:
F0
11
21
31
12
22
32
|
|
Valdemar |
Отправлено: 14.05.2004, 07:33 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Простым запросом, по моему, это сделать не получиться. Можно сделать два цикла, один вложен в другой. Внешний цикл проходит по записям таблицы, а внутренний — по полям каждой записи. И во внутреннем цикле делать вставку значения поля в новую таблицу с одним полем.
Если ваша СУБД поддерживает хранимые процедуры, то можно использовать их. |
|
full_lamer |
Отправлено: 14.05.2004, 08:34 |
|
Машинист паровоза
Группа: Участник
Сообщений: 225
|
Не могли бы Вы помочь с кодом? У меня IB6.5... Я плохо знаю скрипт хранимых процедур....
ЗЫ. Можно без "ВЫ", спасибо...
|
|
Gedeon |
Отправлено: 14.05.2004, 08:56 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Так должно подойти
SQL | SELECT F1 AS F0 FROM YourTable UNION
SELECT F2 FROM YourTable UNION
SELECT F3 FROM YourTable |
Типы данных в столбцах само собой д.б. одинаковые.
Отредактировано Gedeon — 14/05/2004, 10:00
|
|
full_lamer |
Отправлено: 14.05.2004, 09:05 |
|
Машинист паровоза
Группа: Участник
Сообщений: 225
|
Спасибо!
Еще вопрос: как можно суммировать Double Precision?
У меня ошибка возникает....
|
|
full_lamer |
Отправлено: 14.05.2004, 09:16 |
|
Машинист паровоза
Группа: Участник
Сообщений: 225
|
Объединение работает — СПАСИБО!
Только вопрос: как сделать сортировку?
|
|
Gedeon |
Отправлено: 14.05.2004, 10:14 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE (full_lamer @ 14/05/2004, 10:18) | Объединение работает — СПАСИБО!
Только вопрос: как сделать сортировку? |
Создавать временную таблицу, заносить в нее данные полученные предыдущим запрсом, делать из нее выборку, указывая ORDER BY. Насчет IB я вообще говоря тебе не помошник и не в курсе можно ли там создавать временные таблицы, если нет то тада создаешь обычную и после удаляешь, ИМХО проще наверное все таки через ХП.
|
|
full_lamer |
Отправлено: 14.05.2004, 10:44 |
|
Машинист паровоза
Группа: Участник
Сообщений: 225
|
А если так: выгрузить все это в DataSource и потом запросом в DataSource уже с сортировкой?
ЗЫ. Что такое "ХП"?
|
|
full_lamer |
Отправлено: 14.05.2004, 10:51 |
|
Машинист паровоза
Группа: Участник
Сообщений: 225
|
Так как же можно суммировать Double Precision?
|
|
Valdemar |
Отправлено: 15.05.2004, 16:36 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
full_lamer, если не секрет, то что это такое большое вы считаете, если у вас возникает ошибка (наверное переполнение)? А ведь Double Precision это 18 разрядов. Я даже названия токого числа не знаю .
Если делать суммирование не средствами СУБД, а самому, то можно найти в Интернете библиотеки, для работы с очень большими числами.
|
|
full_lamer |
Отправлено: 15.05.2004, 18:54 |
|
Машинист паровоза
Группа: Участник
Сообщений: 225
|
Нет, уже все нормально — ведь я себя так не даром назвал — просто не так использовал запрос пытался вывести одновременно сумму и список фамилий, а потом еще и удивлялся, что же он не работает....
|
|