Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 24.04.2010
Сообщений: 16

Слияние двух относительно схожих по схеме таблиц

06.10.2012, 00:52. Показов 611. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть 2 таблицы:

Поля 1 таблицы: ID, ФИО. Хранит информацию о студентах, которые учились в ВУЗе в прошлом году.

Поля 2 таблицы: ФИО, Найден. Хранит информацию о студентах, которые учились в ВУЗе в прошлом году, но при этом продолжают учится и в этом. (данная таблица получается из сравнения 1 таблицы, а так же еще одной таблицы, которая хранит информацию о студентах, которые учатся в этом году)

Таким образом, 1 таблица хранит множество ФИО, которые так же есть и во 2.

Задача заключается в том, что надо слить 1 и 2 таблицы, при этом метод Merge не подходит, так как добавляет строки 2 таблицы в конец. А надо что бы нашедшиеся студенты сохранили свой старый ID и место в таблице, но при этом в этой строке должна появится пометка, что студент найден.

Добавлено через 4 часа 45 минут
Полазив по зарубежным форумам нашел решение данной проблемы:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public static DataTable MergeTables(DataTable dtFirst, DataTable dtSecond, string CommonColumn)
        {
            DataTable dtResults = dtFirst.Clone();
            int count = 0;
            for (int i = 0; i < dtSecond.Columns.Count; i++)
            {
                if (!dtFirst.Columns.Contains(dtSecond.Columns[i].ColumnName))
                {
                    dtResults.Columns.Add(dtSecond.Columns[i].ColumnName, dtSecond.Columns[i].DataType);
                    count++;
                }
            }
 
            DataColumn[] columns = new DataColumn[count];
            int j = 0;
            for (int i = 0; i < dtSecond.Columns.Count; i++)
            {
                if (!dtFirst.Columns.Contains(dtSecond.Columns[i].ColumnName))
                {
                    columns[j++] = new DataColumn(dtSecond.Columns[i].ColumnName, dtSecond.Columns[i].DataType);
                }
            }
 
            dtResults.BeginLoadData();
            foreach (DataRow dr in dtFirst.Rows)
            {
                dtResults.Rows.Add(dr.ItemArray);
            }
            foreach (DataRow dr in dtSecond.Rows)
            {
                foreach (DataRow dr1 in dtResults.Rows)
                {
                    if (dr1[CommonColumn].ToString().Equals(dr[CommonColumn].ToString()))
                    {
                        foreach (DataColumn c in columns)
                        {
                            dr1[c.ColumnName] = dr[c.ColumnName];
                        }
                    }
                }
            }
            dtResults.EndLoadData();
            return dtResults;
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.10.2012, 00:52
Ответы с готовыми решениями:

Слияние двух таблиц
Подскажите как объединить данные двух таблиц в одну, что бы в итоге получилась таблица из четырёх столбцов. Если в какой строке отсутствуют...

Слияние двух таблиц
Здрям! Подскажите, пожалуйста, как быть: есть 2 листа. 1 - данные об артикулах 2 - путой отчет - в нем есть также номера артикулов и...

Слияние полей из двух таблиц
Доброго времени суток. Имеем две таблицы: A с единственным полем C и B с единственным полем S В каждой из таблиц по одной записи. ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.10.2012, 00:52
Помогаю со студенческими работами здесь

Слияние двух таблиц и выборка данных
Доброго всем времени суток. Подскажите, что в этом запросе не так. $query = &quot;SELECT * FROM `materials` INNER JOIN link ON materials.ID =...

Слияние двух таблиц в третью (Delphi7 + access)
В общем из двух таблиц делаю выборку, в итоговую таблицу не добавляються все поля которые есть в выборке из двух таблиц ... Как сделать так...

Поиск схожих значений в двух столбцах и перенос из первого на другой лист
Добрый вечер! Идея такая! Есть Два столбца, Один большой, второй меньше, нужно найти значения из столбца 2 в столбце 1, удалить их оттуда и...

Слияние таблиц
Добрый день! Сразу скажу что я человек новый и только учусь так что сильно не ругайтесь. Итак вопрос: есть 2 почти одинаковые sql базы...

Слияние таблиц
Дано 2 таблицы c одинаковым идентификатором, нужно объединить их в одну. Проблема в том, что в одной таблице 1 идентификатору соответствует...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru