Я пытаюсь сравнить три таблицы MS Access для любого заданного поля. Например, у меня есть Main Table
, в котором содержится запись для школьников. Он имеет поля Student ID
и Name
. Тогда есть 3 школы подтабликов, но они имеют некоторое несоответствие данных. Поэтому позвольте назвать эти школы, A
, B
и C
. Эти школы каким-то образом перепутали Student ID
с Name
, поэтому мне нужен способ вернуть любой Student ID
, который имеет несоответствие для Name
. Main table
имеет student ID
как PKey
, а другой; A, B & C имеют student ID
как PKey
также. Но проблема в том, что когда я строю отношения в Access, он возвращает только идентификаторы, которые являются общими во всех трех таблицах - INNER JOIN
. Мне нужен эффективный способ сопоставить школы, A -> B & A -> C и объединить результаты. Я думаю, что СОХРАНИТЬ каждый из этих пар может занять слишком много времени. Пожалуйста, дайте мне знать, если у вас есть другие альтернативы.Сравнение таблиц базы данных MS Access
ответ
Итак, у вас есть две проблемы:
- У вас есть плохие данные, которые должны быть исправлены student_id и название смешан до
- ваша схема не хорошо.
Решение проблемы данных:
Если student_ids все числовой, вы можете попробовать что-то вроде:
UPDATE subA SET student_id = [name], [name]=student_id WHERE isnumeric([name]);
И повторить для других смешанных таблиц подразделов.
Решение проблемы схемы:
У вас есть три «подтаблицам» один для каждой школы. Эти три таблицы должны быть единой таблицей, а «Школа» должна быть полем в этой таблице. Так что ваши данные выглядят примерно так:
+--------+------------+---------+
| School | Student_Id | Name |
+--------+------------+---------+
| A | 1 | John |
| A | 2 | Jasmine |
| B | 3 | Fred |
| C | 5 | Harold |
| C | 6 | Donna |
+--------+------------+---------+
Таким образом, вы присоединитесь только в одной таблице, и ваши данные растут только в строках, как новые школы введены в вашу базу данных.
Во-вторых, если я правильно прочитал ваш вопрос, у вас есть как student_id
, так и name
в таблице main
, а также три подтаблицы? Похоже, вы должны держать их только в одной таблице, возможно, по имени student
.
Наконец, вы можете объединить три подтаблицы в единое мнение, что сделает его 9000% (догадка) проще присоединиться к будущим запросам, используя UNION запрос:
SELECT 'A' as school, student_id, name FROM subA
UNION ALL
SELECT 'B', student_id, name FROM subB
UNION ALL
SELECT 'C', student_id, name FROM subC
Это стек все три таблицы на вершине друг друга и дать вам схему, аналогичную приведенному выше примеру. Вы можете присоединиться к своему столику main
:
Вы пометили MySQL, но скажите MS Access ... Какой из них вы используете? – jarlh
Ваша проблема сложная. Разве вы не добавляете простые (незашифрованные) таблицы для более легкого понимания вместо стены текста?Я попытался сделать ваш текст немного короче, чтобы люди не сдавались на полпути. –
Можете ли вы добавить некоторые примеры записей и ожидаемый результат? –