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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2013, 00:56   #1
Atani
Новичок
Джуниор
 
Регистрация: 02.07.2013
Сообщений: 2
По умолчанию Создать БД из данных исходной (Delphi).

Здравствуйте. Познания в программировании не большие, поэтому нужна помощь. Есть база данных (исходник), из нее нужно перенести данные в другую базу в виде, в котором будет проще работать. Покажу на примере.
В ДБ1 (исходной) есть например 6 столбцов. В первом номер по порядку. В остальных 5 значений которые могут быть в промежутке только от 1 до 10. Нужно сделать вторую ДБ2 так чтоб во второй было 11 столбцов. Первый соответствовал первому из ДБ1. Остальные столбики должны быть теми десятью значениями которые могут принимать ячейки из ДБ1.
ДБ1:
|№|A1|A2|A3|A4|A5|
|1 | 3 | 5 | 7 | 8 | 9 |
|2 | 1 | 9 | 4 | 6 | 2 |
Нужно ДБ2:
|№| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
|2 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |
Работаю с DataSource, DBGrid, Table. Для поиска данных и вычислений пользуюсь Query.SQL. Буду благодарен за помощь.
Atani вне форума Ответить с цитированием
Старый 02.07.2013, 03:45   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,544
По умолчанию

Код:
select  n.n, a1.v as v1, a2.v as v2, ..., a10.v as v10
from ( select distinct n as n from t ) as n
left join (select n, 1 as v where a1=1 or a2=1 .... or a5=1) as a1 on n.n=a1.n
left join (select n, 2 as v where a1=2 or a2=2 .... or a5=2) as a2 on n.n=a2.n
....
left join (select n, 10 as v where a1=10 or a2=10 .... or a5=10) as a10 on n.n=a10.n
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 03.07.2013, 00:13   #3
Atani
Новичок
Джуниор
 
Регистрация: 02.07.2013
Сообщений: 2
По умолчанию

Спасибо за ответ. Если можно об'ясните еще вкратце.
1) n.n - это название исходной таблицы.столбец№ ?
2) a1.v - непонятно.
select distinct n as n from t :
3) distinct выводит только уникальные значения столбца?
4) n и t - непонятно. t я так понимаю должно быть таблицей?
left join (select n, 1 as v where a1=1 or a2=1 .... or a5=1) as a1 on n.n=a1.n:
5) left join - выбирает значение из двух таблиц вроде. У меня второй таблицы не существует. Её нужно создать и заполнить из первой.
6) n.n=a1.n - непонятно. По синтаксису должно быть две колонки таблиц по которым идет сравнение. Почему тогда в след строке уже n.n=a2.n?
Atani вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать новый файл той же структуры, содержащий матрицу, транспонированную к исходной. katushaa Паскаль, Turbo Pascal, PascalABC.NET 12 11.04.2012 23:05
ОЧЕНЬ нужно создать собственный тип данных в Delphi Dima_Dima Общие вопросы Delphi 4 16.01.2011 00:45
Borland Developer Studio 2006 Delphi как создать базы данных tatiana74 Помощь студентам 4 26.04.2009 15:52
Исходной код PHP файла SaT31ReG PHP 7 03.10.2008 20:32