Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для Злобный Зайц
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462

Как из одной таблицы сделать другую?

12.01.2013, 22:55. Показов 1508. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Долго ломал голову, как сформулировать вопрос, но так и не придумал ничего тупее. Не судите строго, с базами данных никогда не работал, и даже в терминологии путаюсь.
Изложу задачу "на пальцах", может быть, тогда станет понятно, что мне надо.

Имеется Access-таблица электрических соединений между несколькими элементами электрической схемы. Она состоит из 3 столбов: <имя компонента>, <имя пина>, <имя цепи>. Каждая цепь соединяет не менее двух пинов каки-либо компонентов (в общем случае могут быть пины одного компонента).
В данный момент в дельфи получилось создавать/открывать исходную трёхстолбовую таблицу и отображать её в DBgrid. Требуется из этой таблицы генерить таблицы соединений одного из компонентов, скажем, <КомпонентX> со всеми остальными компонентами.

Имеется:
--------------------------------------
№ |<Компоненты>| <Цепи>| <Пины>|
1..|***********|*******|******|
2..|***********|*******|******|
....|***********|*******|******|
N..|***********|*******|******|

Нужно получить:
---------------------------------------------------------------------------
<Цепи> ..| <КомпонентX>| <Компонент1>| <Компонент2>| .... |<КомпонентN> |
Имя цепи.|...Имя пина.....|...Имя пина.....|...Имя пина.....|......|...Имя пина.....|
Имя цепи.|...Имя пина.....|...Имя пина.....|...Имя пина.....|......|...Имя пина.....|
Имя цепи.|...Имя пина.....|...Имя пина.....|...Имя пина.....|......|...Имя пина.....|
Имя цепи.|...Имя пина.....|...Имя пина.....|...Имя пина.....|......|...Имя пина.....|

С помощью SQL-запросов немного научился в DBgrid отображать разные выборки из исходной таблицы. А вот как сформировать выходную таблицу - не могу сообразить. То-ли надо конструировать какие-то сложно-сочинённые вложенные запросы, то-ли создавать несколько временных таблиц, то-ли что-то совсем третье, чего я и представить себе не могу.
Помогите, пожайлуса, наставьте на путь истинный. Обрисуйте, хотя-бы в общих чертах концепцию решения задачи.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.01.2013, 22:55
Ответы с готовыми решениями:

Как удалить из одной таблицы и перенести в другую
Есть база данных в делфи,таблицы ADOTABLE. Мне нужно при увольнении сотрудника удалить его из одной таблицы и поместить в другую...

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

Как скопировать столбец из одной таблицы в другую?
Здравствуйте, использую АDO для соединения с БД access. Как скопировать столбец из одной таблицы в другую ? без sql запросов

5
 Аватар для Злобный Зайц
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462
12.01.2013, 23:12  [ТС]
На всякий случай вот моё творение.
Вложения
Тип файла: rar DB_FromNetList.rar (8.01 Мб, 21 просмотров)
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
13.01.2013, 09:18
... таблицы соединений одного из компонентов, скажем, <КомпонентX> со всеми остальными компонентами.
По какому критерию?
Если по именам пинов (а другого что-то не видно в трех полях), то как понимать, что в таблице есть пины которые соединяют 140, а в другой таблице аж 280 компонентов? Такое может быть действительно?

Если так, то Аксесс не позволит развернуть таблицу из 280 колонок.
Да и грида, где в ячейках, в массе своей, будут одни и те же названия пинов тоже веселого не прибавляет.

Программеры, как правило, не шибко ориентируются в предметных областях, для которых делают БД.
И здесь тоже тебе самому надо понять в каком виде отображать соединения в гриде.
А дальше можно будет уже совместно решать задачу.

P.S. Виноват, оффтоп: Вызывает недоумение создание разных БД для похожих таблиц.
Сами создаем себе проблемы и героических их преодолеваем?
Это я любя: понятно, что разные БД, видимо, для разных каких-то агрегатов. Но все равно непонятно зачем.
Одна база с двумя таблицами - вполне компактная альтернатива. На крайняк можно создавать разные таблицы
в одной БД (нелепость тоже, но несколько логичнее - чего плодить десятки файлов, если всё можно делать в одном).
1
 Аватар для Злобный Зайц
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462
13.01.2013, 17:20  [ТС]
Первым делом - душевно благодарю за доброжелательный ответ.
Попытаюсь более складно объяснить, чего мне хочется иметь на выходе.
Я хочу сначала делать выборку всех компонентов из сырьевой таблицы, затем выбирать интересующие меня и для этих выбранных уже строить выходную таблицу. Но с этим всё более-менее понятно, можно сказать, проблем с этими двумя пунктами не предвидится.

А вот как должна быть устроена выходная таблица:
Каждый из выбранных компонентов имеет не менее двух пинов (ну, или точек подключения, контактов). Каждый пин каждого компонента либо соединяется с какими-либо другими пинами других компонентов, (или того же компонента), либо никуда не подключен. Я, допустим, делаю выборку из сырьевой таблицы, по именам интересующих компонентов:
SQL
1
SELECT components, nets, pins FROM netlist WHERE components IN (DD1, DD2, DD5, DD8)
Затем выбираю "главный" компонент из числа запрошенных. Теперь на основе этой выборки надо сделать таблицу, в которой в первом столбе будут все цепи из этой выборки, во втором - пины "главного" компонента, связанные с соответствующими цепями (против тех цепей, с которыми у данного компонента нет связи - пусто). В остальных столбах - всё то же для остальных компонентов. Такие таблицы я научился делать в другой своей программе, но без всяких там БД и эскуэлей. На вложенной картинке слева - сырьевая таблица, построенная на БД акцесса в DBGrid. А слева - таблица, сделанная другой программой из того же нетлиста в стринггриде. Правая таблица - образец того, что я хотел бы сделать на базе акцессной таблице с помощью SQL и всего прочего, что ещё там нужно для работы с БД. В правой таблице выделена цепь "+3.3VD", и видно, что она соединяет пины [V12,V10,U11,U9,G4 и т.д.] компонента DD1, пины [D4,D6,F7,E7,F4], пины [80,94,59,63,13] компонента DD3 и пины [37,12] DD5. И то же самое, если присмотреться, можем увидеть и на левой таблице.

Понимаю, что все мои объяснения путанны и занудны. Прошу, однако, об снисхождении, т. к. в программизме, а, тем более, в работе с БД я человек пришлый. Это мои первые (надеюсь, не последние) шаги на этих поприщах. Хочется надеяться, что со временем научусь изъясняться > изящно.
Миниатюры
Как из одной таблицы сделать другую?  
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
13.01.2013, 19:02
Цитата Сообщение от Злобный Зайц Посмотреть сообщение
Изложу задачу "на пальцах", может быть, тогда станет понятно, что мне надо.
Может просто посмотреть задание, которое тебе дали? Тогда Нам, станет понятно, что тебе надо.
0
 Аватар для Злобный Зайц
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462
13.01.2013, 19:15  [ТС]
Да мне не давали задание. Это я сам себе дал задание. Пытаюсь выпилить для себя удобный инструмент для работы. Поэтому приходится самому ставить задачу, прежде чем приступить к решению. А, поскольку с БД никогда не работал, то и не получается нормальным понятным языком объяснить. В общем, если, может быть кто-то из местных обитателей случайно знает, что такое PCAD и нетлист в формате PCAD, то для них попробую изложить с другого конца. Хочу представить вышеупомянутый нетлист, точнее - его фрагмент, в виде таблицы такого вида, как на картинке в моём пердыдущем посте. Перестроить данные в правой таблице в том порядке, как они представлены в левой.

Добавлено через 3 минуты
Я даже думаю, что, если бы нашёл правильные слова для объяснения того, что, собственно говоря, мне надо, то это бы уже и было почти готовым решением.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.01.2013, 19:15
Помогаю со студенческими работами здесь

Подскажите как копировать данные из одной таблицы в другую
Компоненты такие:adotable,datasource,dbgrid,ADOConnection.У меня есть 3 таблицы:Все заказы,готовые,не готовые.Мне нужно что бы программа...

Как из одной таблицы перенести строку в другую таблицу
Не могу перенести строку из одной таблицы в другую. begin Table1.Open; Table.Open; Table1.FieldByName('name').AsString...

Скопировать id с одной таблицы на другую таблицу другую форму
Добрый день! Подскажите, как и где написать,чтобы id с одной таблицы скопировался в другую таблицу (связанную), или в запросе надо...

Как сделать фильтр одной таблицы по нужной строке другой таблицы?
нет ответа на мой вопрос?

Копирование данных из одной таблицы в другую в пределах одной базы. Не работает счетчик
Делаю копирование данных из одной таблицы в другую в пределах одной базы. procedure TForm16.Button2Click(Sender: TObject); var ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru