Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 Преобразовать столбцы в справочную таблицу  [new]
CostyaN
Member

Откуда:
Сообщений: 4
Добрый день
Сейчас в экселе: В таблице сведения об объектах и столбцы с перечнем 30 деталек. Если в объект вставляется деталька, то ячейка помечается символом. Каким оператором разделить одну большую таблицу на три - сведения об объектах + справочник деталек + вставляемые в объект детальки? Данные я импорту через access, потом ibexpert.
16 июн 20, 07:20    [22151334]     Ответить | Цитировать Сообщить модератору
 Re: Преобразовать столбцы в справочную таблицу  [new]
AltHasp
Member

Откуда:
Сообщений: 149
CostyaN,

Вы сами хоть поняли, что написали? Мастер-деталь, внешние ключи FK, суррогатные при использовании генераторов, представления . Как то так.
16 июн 20, 08:26    [22151342]     Ответить | Цитировать Сообщить модератору
 Re: Преобразовать столбцы в справочную таблицу  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 18521
CostyaN,

Каким оператором в екселе разделить?
16 июн 20, 09:46    [22151383]     Ответить | Цитировать Сообщить модератору
 Re: Преобразовать столбцы в справочную таблицу  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 982
CostyaN,

Вы сделайте ещё один столбец. Его значение поставьте 1, 2, 3 (будет означать к какой таблице из трёх принадлежит ряд/строка). И фильтруйте по этому столбцу. IBExpert может сразу закачать из Экселя. Access как промежуточное звено не нужен.
16 июн 20, 09:54    [22151388]     Ответить | Цитировать Сообщить модератору
 Re: Преобразовать столбцы в справочную таблицу  [new]
CostyaN
Member

Откуда:
Сообщений: 4
Проблема не в экспорте,а моих знаниях SQL :-)
Если 0, значит деталь может бысть вставлена в объект
Таблица Obj:
ID Name_____________Detal1___Detal2___Detal3__...__DetalN
1 Obj1________________ 0 _____________ 0
2 Obj2__________________________________0 _________ 0
3 Obj3
...
1кк Obj1kk ___________ 0________ 0

Создам справочник Detal с ID и Name
ID Name
1 Detal1
2 Detal2
3 Detal3
....

Создам третью таблицу DetalsForObjects с ObjectID и DetalID.

// вместо 0 поставлю ИД объекта для ПЕРВОЙ детальки
Update Obj set detal1=ID where detal1 = 0
// добавляю все детальки,которые могут быть вставлены в объект
Потом insert into DetalsForObjects select ID, 1 from Obj where detal1 = id

Потом для второй детальки тоже самое
// вместо 0 поставлю ИД объекта для ВТОРОЙ детальки
Update Obj set deta2=ID where detal2 = 0
// добавляю все детальки,которые могут быть вставлены в объект
Потом insert into DetalsForObjects select ID, 2 from Obj where detal2 = id
... повторить N раз

Может есть правильный способ,чтобы для каждой детали не писать эти пару строк?

Сообщение было отредактировано: 16 июн 20, 10:47
16 июн 20, 10:42    [22151417]     Ответить | Цитировать Сообщить модератору
 Re: Преобразовать столбцы в справочную таблицу  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 982
CostyaN,

insert надо делать честно по одной записи. Update зачем?
16 июн 20, 10:59    [22151430]     Ответить | Цитировать Сообщить модератору
 Re: Преобразовать столбцы в справочную таблицу  [new]
CostyaN
Member

Откуда:
Сообщений: 4
KreatorXXI,

Да, вы правы, наверное можно просто insert into DetalsForObjects select ID, 1 from Obj where detal1 = 0

Все же нельзя парой строк для всех столбцов сразу внести данные?
что то вида процедура в ней while <пока не закончились столбцы>, в нем сравниваем имя столбца/порядковую позицию с именем в справочнике. А внутри уже инсерт
16 июн 20, 11:25    [22151460]     Ответить | Цитировать Сообщить модератору
 Re: Преобразовать столбцы в справочную таблицу  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 982
CostyaN,

непонятно зачем while? На чём хотите написать? Я думал будет подготовлен скрипт, состоящий из одних insert. Можно Экселевскую таблицу сразу закачать. Вернее три раза. Это IBExpert может.
И ещё раз. Если есть какой-то ЯП, то там можно и while. В IBExpert'е есть возможности для написания своих продвинутых скриптов. Я в этом не силён.
16 июн 20, 13:36    [22151573]     Ответить | Цитировать Сообщить модератору
 Re: Преобразовать столбцы в справочную таблицу  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8571
Не проще прямо в экселе склеить строку с инсертами сложить в одной колонке и исполнить ее потом в эксперте как скрипт банальным копипастом?
24 июн 20, 09:52    [22156431]     Ответить | Цитировать Сообщить модератору
 Re: Преобразовать столбцы в справочную таблицу  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 982
Ivan_Pisarevsky,

ТС, похоже, не в ту ветку вопрос засунул. Ему надо написать некий цикл с while. Может на VBA?
25 июн 20, 10:30    [22157011]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить