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

Как пересечь две таблицы?

15.02.2018, 09:52. Показов 2218. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо выбранные 2 база данных(акссес) пересечь между собой(Сравнить) и создать новую таблица на основе сравнения.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.02.2018, 09:52
Ответы с готовыми решениями:

Как сравнить две таблицы ?
Используется C# MySql Имеется Таблица 1 - редактируемая Таблица 2 - шаблон Сценарий

Как связать две таблицы
Всем здравствуйте. Как сделать чтобы при выборе в listbox любого из районов к примеру, Добрушский см. рис 1, нам выдала все записи в гриде...

FIREBIRD, две базы, две таблицы, скопировать данные из одной в другую
В наличии имеются две базы данных Firebird. Часть информации из одной нужно скопировать в другую. Так как я начинающий, поломал себе мозг....

33
0 / 4 / 0
Регистрация: 13.02.2018
Сообщений: 26
15.02.2018, 10:49  [ТС]
listBox1, на нем отображен каталог с БД(акссес), необходимо выбрать две бд и пересечь их(БД одинаковые по размерности, отличается только информация), после чего должна создаться новая бд с результатами несоответствия.
Даже не представляю как это реализовать, помогите(
0
167 / 106 / 30
Регистрация: 19.01.2013
Сообщений: 847
15.02.2018, 12:43
Здрово. И какие проблемы?
Цель есть, задача поставлена.
Вам нужна отмашка? Разрешение на выполнение?
ОК.
Разрешаю приступить к выполнению!


Какие таблицы? Что в них? выкладывайте их сюда.
Как сравнить? Какие критерии? Какие данные сравнивать?
Где создать новую таблицу?

Я сразу вам скажу и без алгоритма, если сравнивать например бананы с кортошкой, то кортошка конечно лучше, но бананы вкусней.
А если вы беларус то выбор вообще очивиде и без алгоритам. И даже результиующую таблицу делать не надо. Просто картошку выводите, собирайте и сейте снова.
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
15.02.2018, 14:43
Сначала нужно изучить ОСНОВЫ БД, и уяснить для себя, что базы данных никогда и никак не могут "пересекаться", а потом изучить таблицы, и понять, что их можно соединять, делая результирующую выборку основываясь на критериях соединения.
От вас вводных данных нет - так что третьим пунктом нужно учить LINQ, и таким способом можно уже на клиенте, имея отобранные 2 таблицы из 2-ух разных БД создать 3-ью на основании соединения.

Не по теме:

А реально - какой ответ ожидали увидеть с таким вопросом?

1
16.02.2018, 09:49

Не по теме:

Цитата Сообщение от dan24 Посмотреть сообщение
А если вы беларус то выбор вообще очивиде и без алгоритам.
ну я беларус. мне тоже "кортошку" выводить и собирать? Чувак, легче на поворотах

0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
18.02.2018, 01:53
pincet, и я беларус, и картошку обожаю во всех её проявлениях! а, вот, аллегория, что он привел, пусть слегка "насмешлива", но правильно отражает суть его замечания!!!
2
 Аватар для XIST
1960 / 1070 / 148
Регистрация: 01.10.2009
Сообщений: 3,591
Записей в блоге: 1
18.02.2018, 12:32
Цитата Сообщение от dan24 Посмотреть сообщение
А если вы беларус то выбор вообще очивиде и без алгоритам
и я беларус, но выбор как-то не очевиден, хотя картошка наше всё конечно))
0
167 / 106 / 30
Регистрация: 19.01.2013
Сообщений: 847
18.02.2018, 16:23
Цитата Сообщение от XIST Посмотреть сообщение
и я беларус,
Да я к примеру.

Добавлено через 7 минут
Вот это на меня Белорусы наехали!
Зачем весь рейтинг снести?!
0
0 / 4 / 0
Регистрация: 13.02.2018
Сообщений: 26
19.02.2018, 23:56  [ТС]
Есть 2 любых Аксес файла с идентичными таблицами, мнеб понять алгоритм ибо никогда вообще с этим не сталкивался и даже представить не могу как это делается. Сравнивать необходимо по всем столбцам.
0
20.02.2018, 06:56

Не по теме:

Цитата Сообщение от dan24 Посмотреть сообщение
Зачем весь рейтинг снести?!
Затем, чтобы выражения подбирали.

0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
20.02.2018, 09:10
Цитата Сообщение от breik1 Посмотреть сообщение
2 любых Аксес файла с идентичными таблицами
Ну вы реально издеваетесь
таблицы указаны в множественном числе, значит в каждой БД их не одна.
А значит придется работать с каждой парой по отдельности, алгоритм хоть и похожий но копипаста не будет.
Приведите пример таблиц (либо скрином - либо скриптом создания), укажите какие столбцы нужно сравнивать и что хотите получить. Иначе тема эта ни о чем.

Не по теме:

Хотите, чтобы помогли - придется пошуршать серым веществом самому, если хотите, чтобы все сделали мы - то это немного в другую тему, там за денежку сделают.

0
0 / 4 / 0
Регистрация: 13.02.2018
Сообщений: 26
20.02.2018, 09:40  [ТС]
Я не в коем разе не думал издеваться, просто сам толком задачу не понимаю, ибо бд на руки мне не скинули, а просто сказали что в каждой БД будет по 1 таблице, все таблицы идентичны, отличаются только записи в них.
Скрин просто таблиц которые создал для примера.
Сравнить надо абсолютно все столбцы
Миниатюры
Как пересечь две таблицы?  
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
20.02.2018, 09:41
да чувак мечтает репликацию (IMHO) на access сделать
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
20.02.2018, 10:15
Лучший ответ Сообщение было отмечено breik1 как решение

Решение

Ну раз нет задания - то вот наименее трудный для понимания, но почти самый трудный для обработки машиной способ - но зато можно почти копипастить
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
DataTable dt = new DataTable();  //первая таблица с 1-го акцеса
            dt.Columns.Add("Id", typeof(string));
            dt.Columns.Add("value", typeof(double));
            dt.Rows.Add("1", 1.12);
            dt.Rows.Add("2", DBNull.Value);
            dt.Rows.Add("3", 7.27);
 
            DataTable dt1 = new DataTable();  //первая таблица с 2-го акцеса
            dt1.Columns.Add("Id", typeof(string));
            dt1.Columns.Add("value", typeof(double));
            dt1.Rows.Add("4", 1.02);
            dt1.Rows.Add("5", DBNull.Value);
            dt1.Rows.Add("6", 2.7);
 
 
            foreach (DataRow dr in dt1.Rows)    //собираем все строки не проверяя соответствие и значения
            {
                dt.ImportRow(dr);
            }
 
            DataTable dt3 = dt.DefaultView.ToTable("Result", true, "Id", "value"); //результат - собраны только уникальные записи
В примере указал создание таблиц, но поскольку они с акцеса придут - то набор полей полей свой, указан и строке импорта (естесно, что select * from не предполагается, а думается, что достаточно навыков указать конкретный набор полей)
1
20.02.2018, 10:35

Не по теме:

hoolygan, что-то мне подсказывает, что не смотря на то, что решение - говнище, по причине

Цитата Сообщение от hoolygan Посмотреть сообщение
наименее трудный для понимания
... оно в таком виде в "продакшен" и уедет)

0
20.02.2018, 11:18

Не по теме:

Usaga, полностью согласен с говнокодом реализации.
Для себя я бы делал через linq на этапе создания результирущей таблицы.
Если это будет единичный случай - я бы даже перекинул таблички с одного файла на другой, так как в сиквеле мне легче составлять запросы, чем в linq, да и реализация, как мне кажется - там будет быстрее немного, чем перебором в linq.
Но человек попросил попроще )

0
20.02.2018, 11:22

Не по теме:

hoolygan, а через LINQ вы бы как сделали (примерно)?

0
20.02.2018, 12:55

Не по теме:

Usaga, для начала компарер

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
public class DataRowComparer : IEqualityComparer<DataRow>
    {
        public bool Equals(DataRow x, DataRow y)
        {
            for (int i = 0; i < x.Table.Columns.Count; i++)
            {
                if (!object.Equals(x[i], y[i]))
                    return false;
            }
            return true;
        }
 
        public int GetHashCode(DataRow obj)
        {
            unchecked
            {
                int output = 30;
                for (int i = 0; i < obj.Table.Columns.Count; i++)
                {
                    output += 3 * obj[i].GetHashCode();
                }
                return output;
            }
        }
    }
потом результат
C#
1
var dtResult = dt.AsEnumerable().Union(dt1.AsEnumerable()).Distinct(new DataRowComparer()).CopyToDataTable();
Это в том случае, если нужно выбирать все уникальные записи из обоих таблиц.

0
20.02.2018, 13:00

Не по теме:

hoolygan, а почему не IEnumerable.Intersect? Там под капотом хеш-таблица, так что всё эффективно.

0
167 / 106 / 30
Регистрация: 19.01.2013
Сообщений: 847
20.02.2018, 13:48
Можете глянуть мой пример, там есть подключение к Access базе.
Короче загружаете всё в переменные типа DataTabel и начинаете сравнивать построчно. Ну алгоритмы сравнения в нете можно найти или самому сделать.
И всё.
Моя тема:
Интерактивный выбор динамически задаваемых параметров
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.02.2018, 13:48
Помогаю со студенческими работами здесь

Как можно сравнить две таблицы sql-ля?
Спасибо, а как можно сравнить две таблицы sql-ля в C# пе? Например у меня есть справочники(норма), и пациент сдает анализы. Надо что бы...

две таблицы
есть две таблицы .Столбцы одной id,name ,столбцы второй id,fname.как присвоить значению name первой таблицы значение fname второй таблицы

Связать две таблицы
сам проект в архиве при нажатии на кнопку button2 открывается form3.при нажатии на кнопку в базу заносятся значения.Мне нужно чтоб...

Две таблицы в гриде
Добрый день. Из базы выбираю две таблички (одна с оборудованием, другая справочник), написал код, и вроде все правильно, но выдает ошибку. ...

Запрос на две таблицы
Здравствуйте. Помогите, пожалуйста с запросом. Сейчас у меня вот такой запрос, он к таблице 1 присоединяет таблицу 2. В первой таблице...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru